initial code commit
merge with github version