A whole lot of more abstraction