Basic functionality done.  Next: simplify and add features.