**Don't reinvent the wheel** is a widely mis-used dogma. Its idea is that if a suitable solution exists, use it instead of creating your own; in addition of saving effort, the existing solution is likely more bug-free than what you would come up with initially. The problem is that often a 100 % suitable solution doesn't exist. A 80 % suitable solution could exist, and using it is probably fine. But how about 60 % suitable? 40 %? Where do you draw the line? If you don't draw the line, you could end up incorporating a bloated library to your project because you're using 10 % of its features - just because you want to avoid "reinventing the wheel". If you reinvent the wheel, you'll get exactly what you want. Another upside is that *you'll learn how to make wheels.* Learning by doing shouldn't be underestimated.