library is restructured using traits