so that got a little out of hand, so i stopped being stupid and rewrote it all