Dont forget split this method in other methods more atomic