+%channels = undef;
+
+%valid = (
+ call => '0,Callsign',
+ conn => '9,Msg Conn ref',
+ user => '9,DXUser ref',
+ startt => '0,Start Time,atime',
+ t => '9,Time,atime',
+ pc50_t => '9,Last PC50 Time,atime',
+ priv => '9,Privilege',
+ state => '0,Current State',
+ oldstate => '5,Last State',
+ list => '9,Dep Chan List',
+ name => '0,User Name',
+ consort => '9,Connection Type',
+ sort => '9,Type of Channel',
+ wwv => '0,Want WWV,yesno',
+ talk => '0,Want Talk,yesno',
+ ann => '0,Want Announce,yesno',
+ here => '0,Here?,yesno',
+ confmode => '0,In Conference?,yesno',
+ dx => '0,DX Spots,yesno',
+ redirect => '0,Redirect messages to',
+ lang => '0,Language',
+ func => '9,Function',
+ loc => '9,Local Vars', # used by func to store local variables in
+ beep => '0,Want Beeps,yesno',
+ lastread => '9,Last Msg Read',
+ outbound => '9,outbound?,yesno',
+ remotecmd => '9,doing rcmd,yesno',
+ pagelth => '0,Page Length',
+ pagedata => '9,Page Data Store',
+);
+
+# create a new channel object [$obj = DXChannel->new($call, $msg_conn_obj, $user_obj)]
+sub alloc