some unnecessary conditions removed...