- Refactoring HAL
- Adding necessary init functions
- Fixed strange linking with memcpy... still needs aliasing as clang/linker
  seems to make three copies of the same code due to variants