added finish method to builder state, instead of using destructor