I dont feel great about this.  The input list is really awkward