Typedefs are sort of okay
Made removal recursive instead