added reflection and extensions