Adding missing file, renaming some classes, adding entry function, adding more tests