new adapter from scratch