support for provide * and currying
semi