work in progress, lots of changes