## Week 3 - GSoC 2020

In the starting days of Week 3, I made further changes in the class level docstrings for `TransferFunction`

after Jason and Nikhil reviewed the PR.
Jason also mentioned that I had to add a new page in sympy docs which should include the purpose of adding a control package to sympy at a high level.
It must also include some examples to show how this implemented functionality could be used to solve elementary block diagram algebra problems.

But before that could happen, he noticed that `solve()`

was not working on an `Eq`

we made after combining transfer functions.
After that, all of us had a really long discussion and finally came to a conclusion that there is a need for adding `Series`

and `Parallel`

classes, so that we donâ€™t perform these
in-place common operations (addition, subtraction & multiplication).

Now, instead of performing in-place operations like this:

```
>>> G1 = TransferFunction(s + 3, -s**3 + 9, s)
>>> G2 = TransferFunction(s + 1, s - 5, s)
>>> G1*G2
TransferFunction((s + 1)*(s + 3), (9 - s**3)*(s - 5), s)
```

We get this:

```
>>> G1*G2
Series(TransferFunction(s + 3, -s**3 + 9, s), TransferFunction(s + 1, s - 5, s))
>>> (G1*G2).doit() # reduces the Series or Parallel objects to single combined transfer function
TransferFunction(...)
```

The whole purpose of doing this is to make `solve`

work by doing block diagram algebra and finally providing us a new transfer function.
Once that is obtained, we can use other functionality on that.

So, in the last few days, I worked on adding a set of unit tests for these classes. Once these unit tests are finalized, I would start with the implementation next week.