first transition refactory