First Steps:


Tinkering:


Once you get some basic functionality working, add more tests in an attempt to find holes in the solution.