this took too long and looks like crap oh well