Boy, do I love heroes. Especially the dark and brooding ones. But whether moody, cold, or boy next door, heroes should have one thing in common.
They're NEVER perfect.
A good hero needs some flaws. Not necessarily anything truly evil and not something annoying. But something to make them real. Something to make their sacrifice/choice/good deed truly heroic.
Being a hero shouldn't be easy. It should come with a price.
I wrote earlier about the movie 3:10 to Yuma. The villain helped the hero out by getting on the train to go to jail, but it wasn't a heroic move. At first glance, or if you'd missed some dialogue, you might think so. But the villain, good old Ben Wade, (yes, the mark of a great character is that days later I still remember his name) is not a hero for a reason. He'd already admitted to escaping from that particular jail before. Twice.
So his actions, while making him likeable, did not make him heroic. There was no real cost.
Dan, on the otherhand, is giving up everything. For what? His honor? The respect of his boy? Justice? I'm not sure the "for what" really matters. What creates a truly compelling hero are his choices throughout the story. When things get tough, when he's torn between his weaknesses, his needs, and what he knows is right, he chooses the good way.
Makes me think of Jeremiah 6:16
". . . ask where the good way is and walk in it, and you will find rest for your souls."
Want an incredible hero? Flaw him, hurt him, and then have him choose the right way.