Re-program the Arduino Uno without losing a base (custom firmware) sketch

And, is it even possible to refer to functions in the boot loader from the "normal" sketch? I am sure it is possible, but the arduino IDE does not make it easy.