using self.log throughout