#5 add log function