Bring back impl abstraction