refactors to use base adapter object