arduino SPI programmer shield - how to disable uart?

Hi, this is my first shield on arduino, and I'm completely new to electronics, so don't judge me if the question is stupid.

My project is SPI programmer/uart bridge shield for arduino mega. Simple example of its use - programming AVR and then read serial output from this AVR. The next photo is actually its working with atmega328p.

Its scheme is fairly simple too - its just pins to connect spi in the bottom (sck, mosi, miso, ss), and rx0, tx0 on the right, and there is a pins for ground and 3.3v and 5v. To work as a SPI programmer there is a 10uF capacitor connected to one side of switch, and just a ground wire connected to opposite side of switch to work as UART bridge. The base of switch is connected to reset, so when the switch is in upper position - arduino mega working as UART brigde, and when switch in bottom position - as SPI programmer.

Everything works just fine - except one thing - when its in the SPI programmer mode you need to remove right uart rx/tx pins. I don't know why is it so, and how to fix this, so can you guys suggest some solutions - I think its doable with pair of transistors with both base's connected to capacitor's plus lead, but I'm not sure about what transistors should it be (npn/pnp for rx/tx), which resistance's and what the whole scheme should look alike. Or, maybe its doable in arduino SPI programmer source code?

If you have any solution please, get my fritzing project in attachment and edit it, or write it in plain words(first is more preferable as I need to see scheme, coz I'm pretty lame as I said), thanks.

arduino mega ISP shield.fzz.zip (5.17 KB)

What controls Reset on the slave device during SPI programming? The master needs to be able to control the slave Reset pin.

CrossRoads:
What controls Reset on the slave device during SPI programming? The master needs to be able to control the slave Reset pin.

On this atmega328p reset (1 pin) is connected to 53 (SS) pin on mega board. Don't know why is that so - just followed this basic tutorial http://www.digitalstateone.net/2012/07/program-atmega328-standalone-with.html

Ok.
I generally refer folks to Nick Gammon's bootload installer sketch.
here

and

CrossRoads:
Ok.
I generally refer folks to Nick Gammon's bootload installer sketch.
here
Gammon Forum : Electronics : Microprocessors : How to make an Arduino-compatible minimal board
and
Gammon Forum : Electronics : Microprocessors : Atmega bootloader programmer

Yes, there is Uno example and ftdi for UART but as I can see, the pinout is similar - SS goes to reset, just as on my setup. Also I didn't saw that ftdi and uno as programmer working together - author may get in same problem. Anyway, is there is smth I missing on my setup? Or it just as it goes - when programming chip with arduino you have to disconnect uart?

When programming via SPI pins + Reset, the Reset Low signal should put all pins into INPUT mode and it should not matter what is happening with the UART pins while the memory is being programmed.