Dynamically define methods.
split method_missing and define_method techniques into two files, refactor define_method to be more readable