Added abstract adapter