it's similar to doing c++ bindings