SWIG is optional