major changes for refactor, added typemap.jl to provide an overview