move HW implementation out of library, leave default templates