slight modificatoins