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.