change Val type to ADT