behave more like a library