better structure in lib