reduce memory usage with __slots__