new object-oriented cannon
new object-oriented cannon