sub create_lead { my $self = shift; my $uuid = undef; my $data = undef; eval { $uuid = $self->gen_uuid(); # This is where I saw the abstraction. # I built $get_factory off of the table descriptions $data = $get_factory->('leads'); $data->{'id'} = $uuid; $data->{'first_name'} = $uuid; $data->{'last_name'} = $uuid; $data->{'date_entered'} = $get_now->(); $data->{'date_modified'} = $get_now->(); $data->{'created_by'} = 1; $data->{'modified_user_id'} = 1; $data->{'description'} = 'Sugar::create_lead()'; }; if($@) { $self->{'ERRSTR'} = $@; $uuid = undef; $data = undef; } return $data; }