This is my code: ## ## Exchange::Account::My - Account Admin module for the Banner Exchange ## package Exchange::Account::My; use strict; use Apache; use Apache::Request; use Apache::Constants qw( :common REDIRECT ); use Apache::Cookie; use DBI; use Data::Dumper; use MD5; my $debug_level = 3; sub handler ($$) { my ($self, $q) = @_; my $r = Apache::Request->new($q); $self->child_init unless $self->{_child_started_up}; # <==== dies here! my $self->{frame} = $r->param('frame') || $self->{config}->{Start_Frame}; my $self->{page} = $r->param('page') || $self->{config}->{Start_Page}; my $self->{command} = $r->param('command') || $self->{config}->{Start_Command}; my $uri = $r->uri; $r->log_error(qq/accessing $uri with params: frame=$self->{frame}\&page=$self->{page}\&command=$self->{command};/) if $debug_level > 0; $self->{session} = $self->get_session($r); my $html; if (my $coderef = $self->dispatch($self->{frame}, $self->{page}, $self->{command})) { $html = $self->$coderef($r); $self->put_or_del_session($r); } else { $html = ''; $r->log_reason(qq/Some bozo tried to access $uri with params: frame=$self->{frame}\&page=$self->{page}\&command=$self->{command};/); $self->logout($r); } $r->content_type('text/html'); $r->no_cache(1); $r->send_http_header; print $html; return OK; } sub init { my $invocant = shift; my $class = ref ($invocant) || $invocant; my $self = {}; bless ($self, $class); $self->{config} = $self->init_config; $self->{dispatch} = $self->init_dispatch_table; $self->{templates} = $self->init_templates; $self->{_child_started_up} = 0; return $self; } ================================================================================================ I'm dying here ... I want to Do The Right Thing and use instance variables, but my code only works uder mod_perl when I use class variables. This can't be the way it was meant to be ... Christopher Everett