implement variable length arbument
add specs for variable length argument
use shared_example
nest describe blocks
refactoring