optionals and funcs