add soption() and a test for it