flesh up even more of the logic especially setup