rebuild with is-a, add tests and examples [ 0.3.0 ]