final refactory