abstraction layer design started