always return new device