source: https://scratch.mit.edu/discuss/topic/20183/?page=1#post-192212 let me know if i am wrong on anything