Lots of changes, but not quite finished