make pure interface