Credit to @hank175
this one is not as good as this one: https://scratch.mit.edu/projects/604615360/#comments-235992015