added initial interfaces and basic implementation stubs