Now open can be repeatedly invoked, too.

Shut first if already opened instead of throwing.