diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 686be7a..fed61b0 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -38,6 +38,7 @@
     <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
     <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.mail" />
+    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
     <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30"></uses-sdk>
 
 
diff --git a/src/com/android/calendar/AllInOneActivity.kt b/src/com/android/calendar/AllInOneActivity.kt
index 3001cca..550bc54 100644
--- a/src/com/android/calendar/AllInOneActivity.kt
+++ b/src/com/android/calendar/AllInOneActivity.kt
@@ -122,11 +122,11 @@
     private var mVerticalControlsParams: LinearLayout.LayoutParams? = null
     private val mSlideAnimationDoneListener: AnimatorListener = object : AnimatorListener {
         @Override
-        override fun onAnimationCancel(animation: Animator?) {
+        override fun onAnimationCancel(animation: Animator) {
         }
 
         @Override
-        override fun onAnimationEnd(animation: Animator?) {
+        override fun onAnimationEnd(animation: Animator) {
             val visibility: Int = if (mShowSideViews) View.VISIBLE else View.GONE
             mMiniMonth?.setVisibility(visibility)
             mCalendarsList?.setVisibility(visibility)
@@ -134,11 +134,11 @@
         }
 
         @Override
-        override fun onAnimationRepeat(animation: Animator?) {
+        override fun onAnimationRepeat(animation: Animator) {
         }
 
         @Override
-        override fun onAnimationStart(animation: Animator?) {
+        override fun onAnimationStart(animation: Animator) {
         }
     }
 
diff --git a/src/com/android/calendar/DayView.kt b/src/com/android/calendar/DayView.kt
index 11f0de6..84ad583 100644
--- a/src/com/android/calendar/DayView.kt
+++ b/src/com/android/calendar/DayView.kt
@@ -211,17 +211,17 @@
 
     var mAnimatorListener: AnimatorListenerAdapter = object : AnimatorListenerAdapter() {
         @Override
-        override fun onAnimationStart(animation: Animator?) {
+        override fun onAnimationStart(animation: Animator) {
             mScrolling = true
         }
 
         @Override
-        override fun onAnimationCancel(animation: Animator?) {
+        override fun onAnimationCancel(animation: Animator) {
             mScrolling = false
         }
 
         @Override
-        override fun onAnimationEnd(animation: Animator?) {
+        override fun onAnimationEnd(animation: Animator) {
             mScrolling = false
             resetSelectedHour()
             invalidate()
@@ -1154,7 +1154,7 @@
         private val mStart: Time
         private val mEnd: Time
         @Override
-        override fun onAnimationEnd(animation: Animation?) {
+        override fun onAnimationEnd(animation: Animation) {
             var view = mViewSwitcher.getCurrentView() as DayView
             view.mViewStartX = 0
             view = mViewSwitcher.getNextView() as DayView
@@ -1168,11 +1168,11 @@
         }
 
         @Override
-        override fun onAnimationRepeat(animation: Animation?) {
+        override fun onAnimationRepeat(animation: Animation) {
         }
 
         @Override
-        override fun onAnimationStart(animation: Animation?) {
+        override fun onAnimationStart(animation: Animation) {
         }
 
         init {
@@ -2682,7 +2682,7 @@
             animator.setDuration(ANIMATION_DURATION)
             animator.addListener(object : AnimatorListenerAdapter() {
                 @Override
-                override fun onAnimationEnd(animation: Animator?) {
+                override fun onAnimationEnd(animation: Animator) {
                     if (!mCancellingAnimations) {
                         // when finished, set this to 0 to signify not animating
                         mAnimateDayHeight = 0
@@ -3038,7 +3038,7 @@
     }
 
     // ScaleGestureDetector.OnScaleGestureListener
-    override fun onScaleEnd(detector: ScaleGestureDetector?) {
+    override fun onScaleEnd(detector: ScaleGestureDetector) {
         mScrollStartY = mViewStartY
         mInitialScrollY = 0f
         mInitialScrollX = 0f
diff --git a/src/com/android/calendar/EventInfoFragment.kt b/src/com/android/calendar/EventInfoFragment.kt
index ba64620..139da7b 100644
--- a/src/com/android/calendar/EventInfoFragment.kt
+++ b/src/com/android/calendar/EventInfoFragment.kt
@@ -424,7 +424,7 @@
         mAnimateAlpha?.addListener(object : AnimatorListenerAdapter() {
             var defLayerType = 0
             @Override
-            override fun onAnimationStart(animation: Animator?) {
+            override fun onAnimationStart(animation: Animator) {
                 // Use hardware layer for better performance during animation
                 defLayerType = mScrollView?.getLayerType() as Int
                 mScrollView?.setLayerType(View.LAYER_TYPE_HARDWARE, null)
@@ -435,12 +435,12 @@
             }
 
             @Override
-            override fun onAnimationCancel(animation: Animator?) {
+            override fun onAnimationCancel(animation: Animator) {
                 mScrollView?.setLayerType(defLayerType, null)
             }
 
             @Override
-            override fun onAnimationEnd(animation: Animator?) {
+            override fun onAnimationEnd(animation: Animator) {
                 mScrollView?.setLayerType(defLayerType, null)
                 // Do not cross fade after the first time
                 mNoCrossFade = true
diff --git a/src/com/android/calendar/month/MonthByWeekAdapter.kt b/src/com/android/calendar/month/MonthByWeekAdapter.kt
index 80fdbac..90daa97 100644
--- a/src/com/android/calendar/month/MonthByWeekAdapter.kt
+++ b/src/com/android/calendar/month/MonthByWeekAdapter.kt
@@ -308,12 +308,12 @@
      */
     protected inner class CalendarGestureListener : GestureDetector.SimpleOnGestureListener() {
         @Override
-        override fun onSingleTapUp(e: MotionEvent?): Boolean {
+        override fun onSingleTapUp(e: MotionEvent): Boolean {
             return true
         }
 
         @Override
-        override fun onLongPress(e: MotionEvent?) {
+        override fun onLongPress(e: MotionEvent) {
             if (mLongClickedView != null) {
                 val day: Time? = mLongClickedView?.getDayFromLocation(mClickedXLocation)
                 if (day != null) {
diff --git a/src/com/android/calendar/month/SimpleWeeksAdapter.kt b/src/com/android/calendar/month/SimpleWeeksAdapter.kt
index 67be4d8..164f05c 100644
--- a/src/com/android/calendar/month/SimpleWeeksAdapter.kt
+++ b/src/com/android/calendar/month/SimpleWeeksAdapter.kt
@@ -243,7 +243,7 @@
      */
     protected inner class CalendarGestureListener : GestureDetector.SimpleOnGestureListener() {
         @Override
-        override fun onSingleTapUp(e: MotionEvent?): Boolean {
+        override fun onSingleTapUp(e: MotionEvent): Boolean {
             return true
         }
     }
