refactoring to depend on basic level details only