Make Gateway purchase() method optional