Refactor cannon