major update and nearly finished