I have now developed a nice AI architecture where each AI will derive from a CognitionModel class.  In this case the Frog AI GameObject owns a FrogCognition model.  This cog model acts as the state machine processor.  It has handles to the AI's state information containend in NPC_State and the AI gameobject itself.  It generates the behaviors trees and states that use the behavior trees. AI Architecture from lowest level to highest level: Task->BehaviorTree->State->StateMachine->CoginitionModel.  This allows the cog model to process and notify the AI of all events, etc as the AI interact in the environment. Tasks have access to the BehaviorTree and the BehaviorTree has access to the cognition model.