complete custom adapter