There's probably a lot in here that I haven't bother to understand because I just accept the exposed abstraction layer.