Push intermediate work...

Still needs some tweaks and testing.