wrapping & refactoring