I did: proc `+`*(clip1:sink VSMapObj, clip2:sink VSMapObj):VSMapObj = Run
without success: /home/jose/src/nimlang/vs.nim/tests/ex06_adding.nim(6, 11) Error: '=dup' is not available for type <VSMapObj>, which is inferred from unavailable '=copy'; requires a copy because it's not the last read of 'c1'; routine: ex06_adding Run Regarding option 2, I understand you mean something like: type VSMapRef = ref VSMapObj Run