cleanup
convenience wrappers (first, last, len, exists)
node callback chaining