converted everyone to Optional<T> instead of raw null values