Stage4

This is the big commit again.  Hopefully we've made it smaller this time.