  We report on improvements extending the capabilities of the atom-by-atom
assembler described in [Barredo et al., Science 354, 1021 (2016)] that we use
to create fully-loaded target arrays of more than 100 single atoms in optical
tweezers, starting from randomly-loaded, half-filled initial arrays. We
describe four variants of the sorting algorithm that (i) allow decrease the
number of moves needed for assembly and (ii) enable the assembly of arbitrary,
non-regular target arrays. We finally demonstrate experimentally the
performance of this enhanced assembler for a variety of target arrays.
