added requires_approval