Refactor to use DynamicInterop