wow, so refactor, much merge conflict.