added __slots__