basic structure of the lib