I have a problem with this method. I think we added for some stupid reason (that jQuery had a similar method). Anyway. We need to unroll this method like this:

``` js
	fade: function(method){
		var tween = this.get('tween');
		if (!method || method == 'toggle') method = this.getStyle('opacity') ? 'out' : 'in';
		if (method == 'in') tween.start('opacity', 1);
		if (method == 'out') tween.start('opacity', 0);
		if (method == 'show') tween.set('opacity', 1);
		if (method == 'hide') tween.set('opacity', 1);
		return this;
	},
```

Only issue is the (stupid) edge cases. For example, I dropped the `args` magic. I mean that's ridiculous. Also the setting and unsetting of visibility shouldn't be fade's job. That should be `set('opacity')`'s job. Which I thought it did.  

So what's next? Could you do me the huge favor of using my code, and running the specs. Also, if they pass just give yourself 15 more minutes to think of all the possible (ridiculous) edge cases that `fade` might have supported.