diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,12 @@
 
+50200.10.0
+==========
+
+API changes:
+ * `Types` got constructors for `Preference` values
+ * `Types` got a new `PreferenceCategoryTeamsOrder` constructor for
+   `PreferenceCategory`
+
 50200.9.0
 =========
 
diff --git a/mattermost-api.cabal b/mattermost-api.cabal
--- a/mattermost-api.cabal
+++ b/mattermost-api.cabal
@@ -1,5 +1,5 @@
 name:                mattermost-api
-version:             50200.9.0
+version:             50200.10.0
 synopsis:            Client API for Mattermost chat system
 
 description:         Client API for Mattermost chat system.  Mattermost is a
diff --git a/src/Network/Mattermost/Types.hs b/src/Network/Mattermost/Types.hs
--- a/src/Network/Mattermost/Types.hs
+++ b/src/Network/Mattermost/Types.hs
@@ -1141,6 +1141,7 @@
   | PreferenceCategoryAuthorizedOAuthApp
   | PreferenceCategoryNotifications
   | PreferenceCategoryLast
+  | PreferenceCategoryTeamsOrder
   | PreferenceCategoryOther Text
     deriving (Read, Show, Eq)
 
@@ -1156,6 +1157,7 @@
     "oauth_app"           -> PreferenceCategoryAuthorizedOAuthApp
     "notifications"       -> PreferenceCategoryNotifications
     "last"                -> PreferenceCategoryLast
+    "teams_order"         -> PreferenceCategoryTeamsOrder
     _                     -> PreferenceCategoryOther t
 
 instance A.ToJSON PreferenceCategory where
@@ -1170,6 +1172,7 @@
     PreferenceCategoryAuthorizedOAuthApp -> "oauth_app"
     PreferenceCategoryNotifications      -> "notifications"
     PreferenceCategoryLast               -> "last"
+    PreferenceCategoryTeamsOrder         -> "teams_order"
     PreferenceCategoryOther t            -> t
 
 data PreferenceName
@@ -1177,7 +1180,7 @@
     deriving (Read, Show, Eq)
 
 instance A.FromJSON PreferenceName where
-  parseJSON = A.withText "PreferenceValue" (return . PreferenceName)
+  parseJSON = A.withText "PreferenceName" (return . PreferenceName)
 
 instance A.ToJSON PreferenceName where
   toJSON = A.toJSON . fromRawPreferenceName
@@ -1244,6 +1247,49 @@
     DirectChannelShowStatus { directChannelShowUserId :: UserId
                             , directChannelShowValue :: Bool
                             }
+
+hideGroupChannelPref :: ChannelId -> UserId -> Preference
+hideGroupChannelPref cId uId =
+    Preference { preferenceCategory = PreferenceCategoryGroupChannelShow
+               , preferenceValue = PreferenceValue "false"
+               , preferenceName = PreferenceName $ idString cId
+               , preferenceUserId = uId
+               }
+
+showGroupChannelPref :: ChannelId -> UserId -> Preference
+showGroupChannelPref cId uId =
+    Preference { preferenceCategory = PreferenceCategoryGroupChannelShow
+               , preferenceValue = PreferenceValue "true"
+               , preferenceName = PreferenceName $ idString cId
+               , preferenceUserId = uId
+               }
+
+showDirectChannelPref :: UserId -> UserId -> Bool -> Preference
+showDirectChannelPref myId otherId s =
+    Preference { preferenceCategory = PreferenceCategoryDirectChannelShow
+               , preferenceValue = if s then PreferenceValue "true"
+                                        else PreferenceValue "false"
+               , preferenceName = PreferenceName $ idString otherId
+               , preferenceUserId = myId
+               }
+
+preferenceToTeamOrder :: Preference -> Maybe [TeamId]
+preferenceToTeamOrder
+  Preference
+    { preferenceCategory = PreferenceCategoryTeamsOrder
+    , preferenceName     = PreferenceName ""
+    , preferenceValue    = PreferenceValue value
+    } = Just $ (TI . Id) <$> T.splitOn "," value
+preferenceToTeamOrder _ = Nothing
+
+teamOrderPref :: UserId -> [TeamId] -> Preference
+teamOrderPref myId tIds =
+    Preference { preferenceCategory = PreferenceCategoryTeamsOrder
+               , preferenceValue = PreferenceValue $ T.intercalate "," $ (unId <$> unTI <$> tIds)
+               , preferenceName = PreferenceName ""
+               , preferenceUserId = myId
+               }
+
 
 preferenceToDirectChannelShowStatus :: Preference -> Maybe DirectChannelShowStatus
 preferenceToDirectChannelShowStatus
