Generics added to AIComponent for future additions to the class, AIComponent converted from an interface to the basic implementation