refactor most of the bullet wave logic into the abstract wave class add rrobot interface