rebuild system architecture and create factory to convert Hash