further refinement of interface