This is a partial commit - the code is most probably broken right now :-(