Initial revision
More work on the design...