added String.sprintf