def build_sub_images_table_main(filename, reproc):
    '''
    The main controller.
    '''
    assert os.path.splitext(filename)[1] == '.png', \
        'Expected .png got ' + filename
    path = os.path.split(filename)[0] 
    basename = os.path.basename(filename)
    master_filename = get_master_filename(basename)
    master_images_query = session.query(MasterImages).filter(\
        MasterImages.name == master_filename).one()
    sub_images_query = session.query(SubImages).filter(\
        SubImages.name == basename).count()
    image_width, image_height = get_image_size(filename)

    # Make the input dict
    record_dict = {}
    record_dict['master_images_id'] = master_images_query.id
    record_dict['master_images_name'] = master_images_query.name
    record_dict['name'] = basename
    record_dict['file_location'] = path
    record_dict['image_width'] = image_width 
    record_dict['image_height'] = image_height
    record_dict['region'] = get_region(filename)

    if sub_images_query == 0:
        record = SubImages()
        insert_record(record_dict, record)
    elif sub_images_query == 1:
        sub_images_query = session.query(SubImages).filter(\
            SubImages.name == basename).update(record_dict)
        session.commit()
    else:
        pass

    session.close()