Confusion with 1 x 1 matrices



Hello group,

maxima seems confused on how to treat 1 x 1 matrices:

,----[ maxima session ]
| (%i1) ex : matrix([3]);
| (%o1)                                [ 3 ]
| (%i2) ex^^-1;
|                                      [ 1 ]
| (%o2)                                [ - ]
|                                      [ 3 ]
| (%i3) invert(ex);
|                                        1
| (%o3)                                  -
|                                        3
| (%i4) ex . ex^^-1;
| (%o4)                                  1
| (%i5) ex . invert(ex);
| (%o5)                                [ 1 ]
`----

So its not clear (at least to me) when the result will be a number
and when it will be a matrix. This is not just idle curiosity, I
spent quite some time trying to figure out what was wrong with my
calculations, I had defined a procedure to get some matrices which 
in some cases were 1 x 1 :(

Is this a bug or a feature?

Best,
Nikos