first pass at library