this seems to be a common pattern as well. We should look into this really! this is a lot of code that we add that is just boiler plate!