Use pointer (not ref) internally, to allow different ports