Add HAL implementation