Some kind of recuirsive types implemented