Factor out code
Improve code readability
Factor out type compability check
Improve debugging messages
Improve colors
Mark all parameters passed by reference as autoreleasing
Add assertions to ensure proper method use
Merge branch 'feature/bindings-improvements' into develop