replaced non shared code from abstract class to a specific class