tutorial finish, still buggy