1. refactor source code
2. add weather