custom adaptor