directory change, ignore files, some refactoring and file splitting and test
rewriting