added Cannon class