parse command line with regex; pointer type now optional; rename some template values for clarity; eliminate argument name in func signatures; TODO tests for non-pointer; thanks @mjibson for ideas