Refactor Many-to-Many and document private methods