weather works, but rough. needs refactoring