diff --git a/lib/node.cpp b/lib/node.cpp
index 088caec6c..be0ff9fcc 100644
--- a/lib/node.cpp
+++ b/lib/node.cpp
@@ -427,7 +427,7 @@ int node_destroy(struct vnode *n)
 
 int node_read(struct vnode *n, struct sample *smps[], unsigned cnt, unsigned *release)
 {
-	int readd, nread = 0;
+	int toread, readd, vect, nread = 0;
 
 	assert(node_type(n)->read);
 
@@ -436,22 +436,20 @@ int node_read(struct vnode *n, struct sample *smps[], unsigned cnt, unsigned *re
 	else if (n->state != State::STARTED && n->state != State::CONNECTED)
 		return -1;
 
-	/* Send in parts if vector not supported */
-	if (node_type(n)->vectorize > 0 && node_type(n)->vectorize < cnt) {
-		while (cnt - nread > 0) {
-			readd = node_type(n)->read(n, &smps[nread], MIN(cnt - nread, node_type(n)->vectorize), release);
-			if (readd < 0)
-				return readd;
+	vect = node_type(n)->vectorize;
+	if (!vect)
+		vect = cnt;
 
-			nread += readd;
-		}
-	}
-	else {
-		nread = node_type(n)->read(n, smps, cnt, release);
-		if (nread < 0)
-			return nread;
+	while (cnt - nread > 0) {
+		toread = MIN(cnt - nread, node_type(n)->vectorize);
+		readd = node_type(n)->read(n, &smps[nread], toread, release);
+		if (readd < 0)
+			return readd;
+
+		nread += readd;
 	}
 
+
 #ifdef WITH_HOOKS
 	/* Run read hooks */
 	int rread = hook_list_process(&n->in.hooks, smps, nread);
@@ -473,7 +471,7 @@ int node_read(struct vnode *n, struct sample *smps[], unsigned cnt, unsigned *re
 
 int node_write(struct vnode *n, struct sample *smps[], unsigned cnt, unsigned *release)
 {
-	int tosend, sent, nsent = 0;
+	int tosend, sent, vect, nsent = 0;
 
 	assert(node_type(n)->write);
 
@@ -489,24 +487,18 @@ int node_write(struct vnode *n, struct sample *smps[], unsigned cnt, unsigned *r
 		return cnt;
 #endif /* WITH_HOOKS */
 
-	/* Send in parts if vector not supported */
-	if (node_type(n)->vectorize > 0 && node_type(n)->vectorize < cnt) {
-		while (cnt - nsent > 0) {
-			tosend = MIN(cnt - nsent, node_type(n)->vectorize);
-			sent = node_type(n)->write(n, &smps[nsent], tosend, release);
-			if (sent < 0)
-				return sent;
+	vect = node_type(n)->vectorize;
+	if (!vect)
+		vect = cnt;
 
-			nsent += sent;
-			debug(LOG_NODE | 5, "Sent %u samples to node %s", sent, node_name(n));
-		}
-	}
-	else {
-		nsent = node_type(n)->write(n, smps, cnt, release);
-		if (nsent < 0)
-			return nsent;
+	while (cnt - nsent > 0) {
+		tosend = MIN(cnt - nsent, node_type(n)->vectorize);
+		sent = node_type(n)->write(n, &smps[nsent], tosend, release);
+		if (sent < 0)
+			return sent;
 
-		debug(LOG_NODE | 5, "Sent %u samples to node %s", nsent, node_name(n));
+		nsent += sent;
+		debug(LOG_NODE | 5, "Sent %u samples to node %s", sent, node_name(n));
 	}
 
 	return nsent;
@@ -701,4 +693,4 @@ json_t * node_to_json(struct vnode *n)
 	json_object_update(json_node, n->cfg);
 
 	return json_node;
-}
\ No newline at end of file
+}