Currently, I'm working on a C# "School System Project" that is customized to Kindergarten, Elementary and high schools. To this end, I've created three distinct projects that literally have similar classes with customized features. 

The problem is that every time I've to modify a class (mainly due to bugs and new features), I'm required to update those similar classes on the three projects. 

Now, I came to my senses and learnt that my design pattern should have been better than this. What's the industry standard for projects of my type where they share similar classes with customized features? Should I consider creating library classes that all can consume or there is a better option?