Be safe_string compatible.

As per #89 request.
I think hiding the explicit `external` from the interface is a good idea, it will give you more flexibility to change in the future.