add initial code
update cmake conf
refactor code with command line argument support