All methods implemented - in dire need of testing!!!