relay: prefer composition to inheritance