Total nitpick: should these be an IllegalStateException (or something)?