Fix #4 and is almost an middle step to #8