Added interface and abstract adapter