Implements all steps