Abstract classes revision

Changed abstract class constructor modifier to protected