new features imply new problems.
this commit is messy