switched to bifunctors 4