initial commit, contains some modifications