rearrange
don't copy arrays
rejig interface, utilise unicode strings