whoops, this is a lot... forgot to commit for a few hours... lol