gun implementation, needs to be fixed