Recursive data type fixes