Projectile class refactored