How to get a form to submit:
Actually the submit handler name should be the form function name with _submit.

So in this case: my_form() returns the form, and my_form_submit($form, &amp;$form_state) is automatically the submit handler. This also works for _validate.

See the Examples project for some working code. It has a submodule called form_example.