A work in progress.  Adding tests and comments and more complete examples