Introduce actory and interfaces.