Made flow a bit more explicit

eliminates multiple/early return flow
Removed unneeded initializations
moved error handling to top
moved initialisation to initializer
Replaced each by map
Removed coupling with previous part of method
Removed almost useless if

Though it might make it possible to do some strange conditional behaviour, but I don't think that's wanted (but please correct me if it is ;) (and add a test ;) ))
Extracted method to evaluate a value in a scope

This generalises all three invocations to instance_exec
instead of instance_eval. This might be wrong, was there
a specific reason to this only in one case, and not in the
others?
Simplified line

This is probably a bug, but the latter part of the line never did anything,
it always evaluates to {}, and merging that is a noop.
Also catch the other error case

empty array otherwise will fail a few lines later
make silent error case less silent
make clear that merge actually is two methods
Made modifiable state smaller

also give object to constructor. I think we might want to consider using an options hash instead of a list of parameters.
Fixed respond_to
Simplified attributes
Merge pull request #22 from markijbema/some-refactoring

Some refactoring