initial commit
finish ex3
merge with upstream