It'd be nice to clean this up a bit and have a single constructor.