more refactoring and projectile fixes