updating with upstream
code clean up