some minor restructuring and realization that function names are going to be hard to come by (especially call backs)