some more work on the whole structure