lots of annotations. pretty sure this is a bad way to do this.