intermediate (type fun)