#13: refactoring