8.3 refactoring further