Finally finished. The next thing to do is root testbench and debug