add ExecutableProgram interface