Refactor gun classes so that more core gun functionality is in the abstract class