Initial implementation

This is a start.  I'll play around with this a little and decide where
to go from here.