pretty much done ;d