It takes a lot to admit that your child has a problem, just keep leading by example, just keep showing him the way.
You can’t change who he is but you can teach him the rights from wrongs.
Every day is another day, try and be one step ahead, don’t let your guard down. You can’t be his best friend , you have to be the parent, so always follow through on what you tell him.
He’s tough to deal with because he is smart, and he is thinking a head, just keep doing your thing, and show him you love him at all times regardless.
Also, make sure that you give him more attention for the positive and less for the negative, less eye to eye contact when disciplining, more eye to eye contact when he’s good.
The best of luck to you!