works with introspection