renamed compose to func_compose to follow naming scheme