THIS IS A DEMO IMPLEMENTATION (and it can be optimized)!!! IT'S NOT A REAL LIBRARY AND IT'S ONLY FOR DEMO PURPOSES (and it was written in a lecture that I gave)!