refactor; #4