Refactoring to remove the need for mutable interfaces in dynamically proxied interfaces. Possibly a breaking change for some users, though I have tried to keep everything working and all tests still pass