Implemented everything
Works fine