removed selfWritten main method in programFactoryImpl