use defaultValue so can still type