Freelancer:
andreyshchedrin
Skitter's batter it up
If you like the approach I can change it the way you want