first commit the whole demo project