Adding in more interfaces and factories