restructured a lot of stuff