To answer your question — the desire for perfection is a good one, but you must accept that no code is perfect. For most people, the advice to learn to mastery is to combat the desire for immediate gratification and combat a mental laziness to look for shortcuts. However, in your case, it’s obvious you have spent more than the necessary time to load this problem in your head and turn it over and over and over. Just like there’s no such thing as a perfect essay, there’s no such thing as a perfect program, and at some point, you have to give yourself room to move on. Finding that point is difficult on your own, which is why we try to give you an idea of what that point is in the assignment. If you’re working on the “bonus” features, then it means you’re already beyond that point.