Separate parsing from action handling