gdlib abstraction