add generic Node struct