Refactoring CoercionAdapter

Remember, don't reinvent the wheel!
Ouch!
Revert "Ouch!"

This reverts commit c6bd71f1417062639821e42c5ef16353ad6c90d1.
Ouch!