add first launch logic.
fix failed unit tests.
clean up project.