consider all cases- not errorfree so far