Implementation of the first