refactored some aiming flexible design