flexible design of libraries