library to build abstraction by composing small functions