Action::perform now handles everything