attempted to optimize; added BallMod