constant propagation added