Switched to using a private constructor to allow subclasses to override -[init] without affecting JKVValue