only rely on string logging