add passive pattern, fixed a bug in "?" function, add tests make logic more testable
Release 0.1.8
make the incorrect bit more obviously according to andres feedback