Add factory interfaces and base helper class. #12