finished implementing all the main features
-