added lots of extra functions