happy little refactoring :) introduced bifunctor.