added lots of new code