added recursive structs for loops and type vectors