more work on the abstraction layer