Mega refactornig, very important