try further code refactoring