Restructured the code
Merge remote-tracking branch 'origin/use_cmake' into next

* origin/use_cmake:
  Restructured the code