improved Adapter, and Listener