wrapping the standalone functions in functools, to assure similar functions