just a warning, I've completely forgotten how this metaclass stuff works... But it still behaves as it should.