J.S.
Take away diapers completely. Underwear only or naked. That's it. I'm usually of the frame of mind that you let the child lead toilet training but when you've reached nearly 4 years old with a typical and healthy child then it's time to take the choice away. Preschools that act as kindergarten prep won't take 4 year olds in diapers.
I wouldn't punish him when he has accidents. Stick to praise when does well. Have him help clean up his messes. Don't over-do the praise, though. Just stick with "good job" and move along. When he goes a couple of days with only one accident, get him a small treat. When he goes a week, get him another reward.