added edge shapes and constructors with more parameters to Edge/Node