add spec for variable length arg
implement variable length arg
use shared_examples
nest describe blocks
use context instead of describe
simplify