When you train your punch, besides the "body push hand" method, do you also train the "body chase hand" method - the moment that your hand touch on your opponent's body (or heavy bag), the moment that you add your body weight behind it? In other words, you don't commit your punch until after the "contact".