uploaded to github, with modifications