manually call self.finish()