Direct copy off abi, take some serious time to rework the code