initial working version

initial working version