Mechanism Design via Multi- to Single-agent Reduction