#9 add log function