Making abstraction layer