modification details:
1. could work on when wifi is not avaliable
2. make model becomes pointer
3. changed recursive upload file
TODO:
1. interface sucks
2. location function is not perfect