use __metaclass__ to create singleton