first pass at the lib