re-edit and implementation