refactored out projectile to its own module