whew. this is long and brutal