I have not yet analyzed your code in detail but ..... at conceptual level if you do for example:

a.add(b)

The result should be provided in one of these two ways:
- updating the a object...