added test_after_commit
use after_commit instead
refactor and allow custom observer
fix and refactor specs