#17 preparation to refactor