Finished implementing all functionality from tutorial