refactoring, design adjustments