A single integrated multi-function apparatus for programming and repackaging programmable devices comprising: input means (5, 6, 7) operable to provide a plurality of un-programmed devices, the input means provided as a reel and tape, a tray or a tube comprising the un-programmed devices loaded therein; moving means operable to convey the un-programmed devices in a path of movement defining a first axis of the apparatus; programming means provided substantially adjacent or near to the moving means and operable to program the un-programmed devices, the programming means is adapted for movement along the first axis and comprises a plurality of programming sockets each for receiving and programming an un-programmed device, and placement means operable to move the programmable devices between the input means (5, 6, 7), the moving means, the programming means and an output for programmed devices in a path of movement defining a second axis of the apparatus; and characterised in that the moving means are further adapted to convey the programmed devices from the programming means along the first axis to checking means provided as an automatic optical inspection system operable to check predefined characteristics of devices programmed by the programming means, in which the predefined characteristics checked by the optical inspection system comprise characters and markings; device orientation; PIN 1 identification; device shape; and presence/absence of a device, and in which the programmed devices passing the check performed by the checking means are conveyed by the placement means for subsequent repackaging in which the J programmed devices are returnable as output to a tape or to a tray by the placement means, and wherein operation of the input means (5, 6, 7), programming means, moving means, placement means and checking means are coordinated and controlled by software control means. input means (5, 6, 7) operable to provide a plurality of un-programmed devices, the input means provided as a reel and tape, a tray or a tube comprising the un-programmed devices loaded therein; moving means operable to convey the un-programmed devices in a path of movement defining a first axis of the apparatus; programming means provided substantially adjacent or near to the moving means and operable to program the un-programmed devices, the programming means is adapted for movement along the first axis and comprises a plurality of programming sockets each for receiving and programming an un-programmed device, and placement means operable to move the programmable devices between the input means (5, 6, 7), the moving means, the programming means and an output for programmed devices in a path of movement defining a second axis of the apparatus; and characterised in that the moving means are further adapted to convey the programmed devices from the programming means along the first axis to checking means provided as an automatic optical inspection system operable to check predefined characteristics of devices programmed by the programming means, in which the predefined characteristics checked by the optical inspection system comprise characters and markings; device orientation; PIN 1 identification; device shape; and presence/absence of a device, and in which the programmed devices passing the check performed by the checking means are conveyed by the placement means for subsequent repackaging in which the J programmed devices are returnable as output to a tape or to a tray by the placement means, and wherein operation of the input means (5, 6, 7), programming means, moving means, placement means and checking means are coordinated and controlled by software control means.