More LOC -> more code to read -> 1) I'm less efficient. 2) there is potentially more bugs as there are more things going on. Look at the two side by side. One is very scary, the other one is less scary.

The only thing that I would do is to make the extract_options!() a module method. But that's about it.