abstraction wip