Implement smart adapter