implements pure node approach