Why do we need two methods. Couldn't `with_default_options` scope depending on whether it receives a block or not?