general purpose library