use ruby 2.0 keyword args for optional fields