make program object an opaque handle