high order functions added