Brainwash him.
Every evening since my DS was around two I have done the bedtime routine. Then once lied in bed we have had a cuddle and a story. As he is falling asleep I have spoken softly to him saying these things:
'You are such a lovely, good boy'
'Arnt you kind. I love it when you share'
'You have lovely friends, I really like them'
'ooo you are so snuggly and warm now in bed and so safe with mummy and Daddy in this house'
'I'm so excited for tomorrow, I dont know what we are going to do, but whatever it is we will be lucky for doing it'
'Your soo beautiful, you get more beautiful everyday..I can't wait for tomorrow'
Things of this nature. Every night whilst he's drifting of to sleep.
I can honestly say I have a happy, confident, sociable, funny, well behaved, greatful little four year old boy now. I get complimented on him every where we go.
Maybe you could try 'Brainwashing'at bed time too. Takes a while haha,but o honestly believe by me doing this its helped my DS be the little boy he is now.
I'm not sure if Brainwashing is the right words to describe what I have done, but I do know its got to be a part of the reason why my DS behaves the way he does.
Either that or I'm just very lucky to have such a lovely child 