this is a adapter implementation v1