add dependency graph cycle detection. focus development in node. use simplest design possible. we optimise later