Converted singleton to abstract class