add support for overloaded/array/in/out
not fully tested
add support for constructors