base classes without implementation