adds options, extract logic needs rethinking