source node should never be null