Dynamic and Many-to-many matching