added type upvalue