fix bugs, make 'punch' work