No intended changes in behaviour.
Passes all existing tests.
TODO: There's one problem that remains unchanged - if we lose the alias state of class objects (e.g. by putting them in a container), they're interpreted and called as instances (i.e. we use `__call__` instead of the constructor).
Add a test for this.