Sketching out an approach for HAL.

Making heavy usage of preconditions here. Maybe a bit excessive?