weather class refactored