scratch back everything and implementation