Thank you for your reply. I do want to maintain different layers so that I can categorize and do other things (such as show/hide) at the layer level later.
Here is the layer.add() method's documentation remarks and with my understandings in bold:
The obj must not already belong to a different document or view, nor to a group. (does not apply. Object is in the same document, but in a different layer.)
If the object already belongs to this layer, nothing happens. (could be a possible scenario, but this particular example does not apply)
The object's GoObject.Layer property will be changed to be this layer. If the object already belonged to a different layer in this same document or view, the Changed hint will be ChangedObjectLayer, otherwise it will be InsertedObject. (Shouldn’t this scenario apply to my example, object already belonged to a different layer and will be change to the designated layer after the call?)
As for your suggestion of remove from one layer then add to the other layer, if that is the only route, any suggestions on maintaining links, node positions? In other words, make users feel that they are just pull or push objects into different layers while maintaining everything else?