full rewrite, added classes Program and Shader
merged