add OptionsTrait, each() method and more

refs #3, refs #4, refs #5, refs #7, refs #8