Major changes.

FCW class. Optimized Cannon code by creating Enum and moving creation
code to factory.