implement shoot function (unfinished)