functional middleman