PHASE 2: Initial version finished, some minor cosmetic changes are still on going.