initial adapter implementation