require'd customer_vault in transaction because it's used there