add FunctionalUtils