refactoring and letting attributeManager to hold a projectileFacotry
merge try again