This includes the initial interfaces and base classes