completed interface, implementation