refactored and added reflection