Closes #4 and #5.  Merges #5 with additional commits.