I note that, in your STORE and FETCH functions, you shift the first argument into $class, then operate on the undeclared $self. strict would have caught this error.
Of course, fixing that will still leave you with the more insidious problem that tilly pointed out.
Comment on Re: Combined tied-array / object problem