you probably could avoid the value boxing here by moving the getValue() to the writeValue switch