Learned how to implement all functionalities