final

needs some fixes but i think it's ready.