major update, to much for a single commit really.