update plugin prototype and add a HAL plugin