added the necessary interfaces and dependencies