completed interfaces abstraction