implementing smart AOE support if we are using FH
re-organized rotation to help avoid code duplication
re-organizing rotation to support smart AOE
re-arranging code to support AOE
including smart AOE support for FH and without