total re-write