started refactoring vertical.rb; it's going to be harder than horizontal, possibly