Collapsing the HAL modules a bit and adding documentation