mostly fixed controller and form; needs to be more generic