Have some insight about good design versus the hacky way I'm doing things right now- might want to put this experimentation on its own branch