added a gun and abastraction for it