This is where it starts to get fun, and perhaps non-performant.