implemented createProgram and a working example