consolidate Parameter and InitNode into new AbstractNode class
separate source class/instance creation onto two lines. this is done because if the kw dict
is modified during class creation, we want those changes to be passed to the instance, which
would not happen formerly.