introspection refactor