All basic functionality now implemented