Updated Implementation