refactor; #1