duplicate functions removed