Many changes to the project, more test cases (not finished yet)