use recursion when constructing Of types