class Base(object):
	
	def __init__(self, x):
		self.x = x if x else None
	
	def start(self):
		pass
	
	def stop(self):
		pass
	
	def error(self, msg):
		raise Exception(msg)
	
	def check(self):
		if self.x is None:
			self.error('wrong x')

class NewFeature(Base):
	
	AUTO_PREPARE = False
	
	def __init__(self, x, additional=False):
		super(Base, self).__init(x)
		self.additional = additional
	
	def additional_start(self):
		if self.AUTO_PREPARE:
			self.custom = 'xxx'
		else:
			self.costom = None
	
	def additional_stop(self):
		if self.AUTO_PREPARE:
			self.check()
		else:
			if self.costom is None:
				self.error('Nobody set custom')
	
	def start(self):
		super(Base, self).start()
		if self.additional:
			self.additional_start()
	
	def stop(self):
		if self.additional:
			self.additional_stop()
		super(Base, self).stop()
		