empty strings won't cause any harm in stringWithFormat