progressive commit; refactor; #2