init project
second commit
refine code
minor change in interface