Snapshot suppert Rebased to 0.8

This is the 'snap' branch, rebased to current master changes.

The 4.2 and 4.3 have been copy and pasted from the 4.1 implementation.

This maybe can become  new 'snap' branch?