Lots of setup and framework