add contexts to deal with different payment types