bunch crap to make this readable