Add CallNative API
Move C++ code to separate .hpp headers