Solve the following math problem efficiently and clearly:

- For simple problems (2 steps or fewer):
Provide a concise solution with minimal explanation.

- For complex problems (3 steps or more):
Use this step-by-step format:

## Step 1: [Concise description]
[Brief explanation and calculations]

## Step 2: [Concise description]
[Brief explanation and calculations]

...

Regardless of the approach, always conclude with:

Therefore, the final answer is: $oxed{answer}$. I hope it is correct.

Where [answer] is just the final number or expression that solves the problem.

Problem: The graph of the rational function $\frac{p(x)}{q(x)}$ is shown below, with a horizontal asymptote of $y = 0$ and a vertical asymptote of $ x=-1 $. If $q(x)$ is quadratic, $p(2)=1$, and $q(2) = 3$, find $p(x) + q(x).$
[asy]
size(8cm);
import graph;

Label f; 
f.p=fontsize(6); 

real f(real x) {return (x-1)/((x-1)*(x+1));}

int gridsize = 5;
draw((-gridsize,0)--(gridsize,0), black+1bp, Arrows(8));
draw((0,-gridsize)--(0, gridsize), black+1bp, Arrows(8));
label("$x$", (gridsize, 0), E);
label("$y$", (0, gridsize), N);
label("$0$", (0,0),SE, p=fontsize(8pt));
for (int i=-gridsize+1; i<0; ++i){
    label("$"+string(i)+"$",(i,0),S, p=fontsize(8pt));
    label("$"+string(i)+"$",(0,i),E, p=fontsize(8pt));}
for (int i=1; i<=gridsize-1; ++i){
    label("$"+string(i)+"$",(i,0),S, p=fontsize(8pt));
    label("$"+string(i)+"$",(0,i),E, p=fontsize(8pt));}



draw(graph(f,-5,-1.2));
draw(graph(f,-.8,0.85));
draw(graph(f,1.15,5));
draw((-1,-5)--(-1,5), dashed);
draw(circle((1,.5),.15));



[/asy]
user