add demo program and test