refactory Rich