add methods for canPerform different swap types