allow users to define defaults using a proc