__slots__ optimization added