edit implementation