actually, LogicException should be thrown here