Collections with visibility

Much refactoring.
The UNION op makes it a lot cleaner, I just really don't know how that'll perform