Well, this is a lot tidier then my implementation, however I stopped using it as it was just too bulky as i never bothered to place it in a case, so wires everywhere! Kudos none the less!

e; maybe a bit more commenting in the code for people whom is newer on the coding side?
I always try to practice commenting every line if i release code.