added lots of implimentation functionality to start with