Initial version

Still has a lot of edge cases not working.  Lacking documentation.  But the main scenario works.

Signed-off-by: Patrice Kerremans <patrice@threeandahalfroses.com>