need to port dictionary to shelve