save memory using __slots__