some code from github

a