added interfaces and their partial implementations
added interfaces and their partial implementations