pre & post now vectorized