reverse previous commit, disabling super class' init method cause all subclasses to crash due to call to [super init]. Since we are inheriting from NSObject there may be behavior that we need from the super class
add protocol to Program class to ensur that required methods are implemented by subclasses