Another thing you could start doing is keep the treats off of you. So work with him at home, but keep the treats up on a shelf or something, away from you. Have him do a couple commands and then get all excited and run with him over to where the treats are and give him a couple. And I would always vary where you put the treats. That way he starts thinking that treats can come from anywhere, and just because they're not on YOU, doesn't mean he won't get rewarded.
Also--do you always give him a treat, every time he obeys a command? Like if you tell him to sit 10 times, do you give him a treat after each time he sits? Like BadAxe was saying, a variable reward schedule might help. So if you ask him to sit 5 times, maybe you only give him a treat 4 of those times. And then only 3 times. Then all 5 times, then only 2 times, etc. Keep it unpredictable so he never knows which time will earn the treat. This will teach him that he doesn't always get a treat for obeying (but still reward him with lots of praise), but that he SOMETIMES gets a treat, so he'll realize that it's in his best interest to keep listening to you because a treat might be coming.
This is also where I've resigned myself to the fact that I will probably always need to bring a squeaky toy to the dog park. I wish Juno could be like all the other dogs and just come when I call her because that's what she should do, but that's not what she does, and so I'd rather just bring the toy so I know I won't have any issues.