Adapter implementation