basic functionality now all working