I think this block add some duplication, which is should be supported each time you change `first` method.