composition > special case funcs