move ProgramObject to libraries