added interfaces
factories added