It sounds like your son is a deep sleeper. I would wait until he is snoring then ship him off to his own bed. Have to be cruel to be kind. Another thing dont let him sleep early. Keep him up untill he is very tired.