digraph { node [shape="rect"]; "model" [ label = <

apop_model
[Info]
int vsize, msize1, msize2, dsize
char name[101] | char error
apop_data * data, | *parameters, *info
[Functions]
estimate (apop_data * data, apop_model *model)
log_likelihood(data, model) | cdf (data, model)
p(data, model) | constraint(data, model)
draw(double * out, gsl_rng * r, model) | prep(data, model)
[Settings]
void *more
int more_size
*settings

> style="rounded" ]; "settings" [ label = <

apop_settings_type
char *name
void *asst
free(settings)
copy(settings)

    >
    style="rounded"
    ];

        subgraph {rank="same"
    "data" [
            label  = <

apop_data
gsl_vector * vector | apop_data *more
gsl_vector *weights | gsl_matrix *matrix
char ***text | int text_size[2]
apop_name *names | char error

> style="rounded" ]; "info" [ label = <

apop_data
...
more

> style="rounded" ]; "infonext" [ label = <

apop_data
...
more

    >
    style="rounded"
            ];
        }

    "gsl_matrix" [ label  = <

gsl_matrix
double *data
int size1, size2
...

> style="rounded" ]; "names" [ label = <

apop_name
char *title
int colct, rowct, textct
char *vector
char **col, **row, **text

> style="rounded" ]; "gsl_vector" [ label = <

gsl_vector
double *data
int size
...

    >
    style="rounded"
            ];

    #model:params:s -> data;
        model:dd:s -> data;
        model:ls -> settings;
    data:mm:se->gsl_matrix;
    data:vv:sw->gsl_vector;
    data:ww:sw->gsl_vector;
    data:nn->names;
    #data:dm->data:n;
    data:dm:e->info:nw [len=0.2];
    info:more1:ne->infonext:nw;
    }