interface update and implementation