Made api more Ruby-like and fixed some bugs.

These are some changes that I made a while back. I thought the api was maintained by shopstyle, so I submitted the PR to the wrong fork. Here it is again.
You seem to repeating this (see previous comment).  How about bundling what is checking `opts` into a helper method?