refactoring, see #2
refactoring, see #2