rewrite weather utility with singleton