add TryCatch & polymorphic