working towards more flexible lib structure