Master code left as the beginning
Bug fixed v1.1
recolve merge conflict
Finished for v2