refactoring step 1
refactoring step 2, project compilable now
resolve conflicts