Minor: sealed
Use request classes as arguments for actions