improve factories,
add NodeID coercion