weather refactor