better lib structure