doing a more efficient implementation of shooting