Refactor the adapter assignment code

Delegate to mapper then to collection