Finished Stage III of the project.
Still need to check whether Stage II is right or not.