Refacetored code for options :as => <funcname>, and not :self