add some comments and review the class diagram
benchmark implementation and run partial implementation