refactory all ok