better library structure