a lot of changes, restructured