Moved some abstraction around