beginning gl implementation