Altered and added a ton of abstractions for many-to-many