Moved some abstractions around