I'm going to rewrite some popular open-source projects for learning them