Added optional `final` state(s) and `isFinished()` helper method (issue #23)