advice on using packages



I was thinking about how I might use the package system in linalg.
So, I tried the experiment:

MAXIMA> (defpackage :my (:use :common-lisp :maxima)
     (:import-from :maxima #:add :maxima :mplus :maxima :simp))

MY> (add '$a '$b);
((MPLUS SIMP) $A $B)

(Q1) Is all this :import stuff really needed?

(Q2) Switching back to the 'maxima' package seems
like it will cause trouble:

MY> (setf q (add '$a '$b));
((MPLUS SIMP) $A $B)
MY> (in-package :maxima);
#<"MAXIMA" package>
MAXIMA> q
Maxima encountered a Lisp error:
 Error in EVAL [or a callee]: The variable Q is unbound.

MAXIMA> my::q
((MPLUS SIMP) MY::$A MY::$B)

How could this be done? (A general scheme to change
my::<junk>  --> <junk>.)

(Q3) Other advice -- perhaps a pointer to a good
tutorial on packages in CL?

Barton