diff --git a/language-ats.cabal b/language-ats.cabal
--- a/language-ats.cabal
+++ b/language-ats.cabal
@@ -1,5 +1,5 @@
 name:                language-ats
-version:             0.2.0.0
+version:             0.2.0.1
 synopsis:            Parser and pretty-printer for ATS.
 description:         Parser and pretty-printer for [ATS](http://www.ats-lang.org/), written with Happy and Alex.
 license:             BSD3
diff --git a/src/Language/ATS/Lexer.x b/src/Language/ATS/Lexer.x
--- a/src/Language/ATS/Lexer.x
+++ b/src/Language/ATS/Lexer.x
@@ -22,8 +22,6 @@
 
 import Control.Composition
 import Data.Data (Typeable, Data)
-import Data.Char (toUpper, toLower)
-import Control.Lens (over, _head)
 import Control.DeepSeq (NFData)
 import GHC.Generics (Generic)
 import Text.PrettyPrint.ANSI.Leijen hiding (line, bool, column, (<$>))
@@ -48,9 +46,6 @@
 
 $br = [\<\>]
 
--- Boolean literals
-@bool = (true | false)
-
 -- Integer
 @integer = $digit+
 @time_lit = $digit+ u
@@ -208,7 +203,6 @@
     @char_lit                { tok (\p s -> CharTok p (toChar s)) }
     @lambda                  { tok (\p s -> Arrow p s) }
     @func_type               { tok (\p s -> FuncType p s) }
-    @bool                    { tok (\p s -> BoolTok p (read (over _head toUpper s)))}
     @time_lit                { tok (\p s -> TimeTok p s) }
     @integer                 { tok (\p s -> IntTok p (read s)) } -- FIXME shouldn't fail silenty on overflow
     @float                   { tok (\p s -> FloatTok p (read s)) }
@@ -321,7 +315,6 @@
 
 data Token = Identifier AlexPosn String
            | Keyword AlexPosn Keyword
-           | BoolTok AlexPosn Bool
            | IntTok AlexPosn Int
            | FloatTok AlexPosn Float
            | CharTok AlexPosn Char
@@ -425,7 +418,6 @@
     pretty (Identifier _ s) = text s
     pretty (IdentifierSpace _ s) = text s
     pretty (Keyword _ kw) = pretty kw
-    pretty (BoolTok _ b) = text $ over _head toLower (show b)
     pretty (IntTok _ i) = pretty i
     pretty (FloatTok _ x) = pretty x
     pretty (CharTok _ c) = squotes (pretty c)
@@ -453,7 +445,6 @@
 token_posn (Identifier p _) = p
 token_posn (IdentifierSpace p _) = p
 token_posn (Keyword p _) = p
-token_posn (BoolTok p _) = p
 token_posn (IntTok p _) = p
 token_posn (FloatTok p _) = p
 token_posn (StringTok p _) = p
diff --git a/src/Language/ATS/Parser.y b/src/Language/ATS/Parser.y
--- a/src/Language/ATS/Parser.y
+++ b/src/Language/ATS/Parser.y
@@ -101,7 +101,6 @@
     propdef { Keyword $$ KwPropdef }
     list { Keyword $$ (KwListLit "") }
     list_vt { Keyword $$ (KwListLit "_vt") }
-    boolLit { BoolTok _ $$ }
     timeLit { TimeTok _ $$ }
     intLit { IntTok _ $$ }
     floatLit { FloatTok _ $$ }
@@ -220,7 +219,6 @@
      | Type prfTransform underscore { AsProof $1 Nothing }
      | view at Type { ViewType $1 $3 }
      | viewPlusMinus { ViewLiteral $1 }
-     | view { ViewLiteral None }
      | Existential Type { Ex $1 $2 }
      | Universal Type { ForA $1 $2 }
      | Type at Type { At $2 (Just $1) $3 }
@@ -255,8 +253,7 @@
     | StaticExpression { Arg (Second (ConcreteType $1)) }
 
 -- | Parse a literal
-Literal : boolLit { BoolLit $1 }
-        | timeLit { TimeLit $1 }
+Literal : timeLit { TimeLit $1 }
         | intLit { IntLit $1 }
         | floatLit { FloatLit $1 }
         | string { StringLit $1 }
@@ -368,7 +365,6 @@
                  | StaticExpression BinOp StaticExpression { StaticBinary $2 $1 $3 }
                  | intLit { StaticInt $1 }
                  | doubleParens { StaticVoid $1 }
-                 | boolLit { StaticBool $1 }
                  | sif StaticExpression then StaticExpression else StaticExpression { Sif $2 $4 $6 } -- TODO separate type for static expressions
                  | identifierSpace { StaticVal (Unqualified $ to_string $1) }
                  | Name openParen StaticArgs closeParen { SCall $1 $3 }
@@ -443,6 +439,7 @@
      | vt0pPlain { Vt0p None }
      | vt0pCo { Vt0p Plus }
      | addr { Addr }
+     | view { View $1 None } 
      | IdentifierOr { NamedSort $1 }
 
 QuantifierArgs : IdentifierOr { [$1] }
@@ -611,14 +608,13 @@
             | lsqbracket {% Left $ Expected $1 "Function signature" "[" }
 
 -- | Parse affiliated `sortdef`s
-AndSort : AndSort and IdentifierOr eq Type { AndD $1 (SortDef $2 $3 $5) } -- TODO figure out if this is building up the slow way
-        | sortdef IdentifierOr eq Type { SortDef $1 $2 $4 }
+AndSort : AndSort and IdentifierOr eq Sort { AndD $1 (SortDef $2 $3 $5) } -- TODO figure out if this is building up the slow way
+        | sortdef IdentifierOr eq Sort { SortDef $1 $2 $4 }
 
--- FIXME stadef r() = file_mode_r()
-AndStadef : stadef boolLit eq Name { Stadef (over _head toLower (show $2)) $4 [] }
-          | stadef boolLit eq identifierSpace { Stadef (over _head toLower (show $2)) (Unqualified $ to_string $4) [] }
-          | AndStadef and stadef boolLit eq identifierSpace { AndD $1 (Stadef (over _head toLower (show $4)) (Unqualified $ to_string $6) []) }
-          | AndStadef and stadef boolLit eq identifier { AndD $1 (Stadef (over _head toLower (show $4)) (Unqualified $ to_string $6) []) }
+AndStadef : stadef IdentifierOr eq Name { Stadef $2 $4 [] }
+          | stadef IdentifierOr eq identifierSpace { Stadef $2 (Unqualified $ to_string $4) [] }
+          | AndStadef and stadef IdentifierOr eq identifierSpace { AndD $1 (Stadef $4 (Unqualified $ to_string $6) []) }
+          | AndStadef and stadef IdentifierOr eq identifier { AndD $1 (Stadef $4 (Unqualified $ to_string $6) []) }
 
 StafunDecl : prfun PreFunction { Func $1 (PrFun $2) }
            | prfn PreFunction { Func $1 (PrFn $2) }
@@ -658,6 +654,9 @@
 SortArg : IdentifierOr colon Sort { [ SortArg $1 $3 ] }
         | SortArg comma IdentifierOr colon Sort { SortArg $3 $5 : $1 }
         | SortArg comma IdentifierOr { Anonymous (NamedSort $3) : $1 }
+        | SortArg comma Sort { Anonymous $3 : $1 }
+        | IdentifierOr { [ Anonymous (NamedSort $1) ] }
+        | Sort { [Anonymous $1] }
 
 SortArgs : openParen SortArg closeParen { Just $2 }
          | doubleParens { Just [] }
@@ -674,7 +673,7 @@
          | absview IdentifierOr openParen FullArgs closeParen MaybeType { AbsView $1 $2 $4 $6 }
          | abstype IdentifierOr SortArgs MaybeType { AbsType $1 $2 $3 $4 }
          | absvtype IdentifierOr SortArgs MaybeType { AbsViewType $1 $2 $3 $4 }
-         | dataprop IdentifierOr openParen FullArgs closeParen eq DataPropLeaves { DataProp $1 $2 $4 $7 }
+         | dataprop IdentifierOr SortArgs eq DataPropLeaves { DataProp $1 $2 $3 $5 }
          | absprop IdentifierOr openParen FullArgs closeParen { AbsProp $1 $2 $4 }
          | AndSort { $1 }
          | AndStadef { $1 }
diff --git a/src/Language/ATS/PrettyPrint.hs b/src/Language/ATS/PrettyPrint.hs
--- a/src/Language/ATS/PrettyPrint.hs
+++ b/src/Language/ATS/PrettyPrint.hs
@@ -272,10 +272,12 @@
     pretty (Vt0p ad)     = "vt@ype" <> pretty ad
     pretty (NamedSort s) = text s
     pretty Addr          = "addr"
+    pretty (View _ t)    = "view" <> pretty t
 
 instance Pretty Type where
     pretty = cata a where
         a (NamedF n)              = pretty n
+        a (ViewTypeF _ t)         = "view@" <> parens t
         a (ExF e t)               = pretty e <+> t
         a (DependentF n ts)       = pretty n <> parens (mconcat (punctuate ", " (fmap pretty (reverse ts))))
         a (ForAF u t)             = pretty u <+> t
@@ -290,7 +292,6 @@
         a (ConcreteTypeF e)       = pretty e
         a (TupleF _ ts)           = parens (mconcat (punctuate ", " (fmap pretty (reverse ts))))
         a (RefTypeF t)            = "&" <> t
-        a (ViewTypeF _ t)         = "view@" <> parens t
         a (FunctionTypeF s t t')  = t <+> string s <+> t'
         a (ViewLiteralF c)        = "view" <> pretty c
         a NoneTypeF{}             = "()"
@@ -548,7 +549,7 @@
     pretty (Func _ (PrFun pref))           = "prfun" </> pretty pref
     pretty (Func _ (PrFn pref))            = "prfn" </> pretty pref
     pretty (Extern _ d)                    = "extern" <$> pretty d
-    pretty (DataProp _ s as ls)            = "dataprop" <+> text s <> prettyArgs as <+> "=" <$> prettyDL ls
+    pretty (DataProp _ s as ls)            = "dataprop" <+> text s <> prettySortArgs as <+> "=" <$> prettyDL ls
     pretty (ViewTypeDef _ s as t)          = "vtypedef" <+> text s <> prettySortArgs as <+> "=" <#> pretty t
     pretty (TypeDef _ s as t)              = "typedef" <+> text s <> prettySortArgs as <+> "=" <+> pretty t
     pretty (AbsProp _ n as)                = "absprop" <+> text n <+> prettyArgs as
diff --git a/src/Language/ATS/Types.hs b/src/Language/ATS/Types.hs
--- a/src/Language/ATS/Types.hs
+++ b/src/Language/ATS/Types.hs
@@ -43,6 +43,7 @@
     , StackFunction (..)
     , Sort (..)
     , SortArg (..)
+    , SortArgs
     , rewriteATS
     , rewriteDecl
     -- * Lenses
@@ -75,6 +76,8 @@
 data Leaf = Leaf { _constructorUniversals :: [Universal], name :: String, constructorArgs :: [String], maybeType :: Maybe Type }
     deriving (Show, Eq, Generic, NFData)
 
+type SortArgs = Maybe [SortArg]
+
 -- | Declare something in a scope (a function, value, action, etc.)
 data Declaration = Func AlexPosn Function
                  | Impl [Arg] Implementation -- TODO do something better for implicit universals
@@ -88,23 +91,23 @@
                  | Staload Bool (Maybe String) String
                  | Stadef String Name [Type]
                  | CBlock String
-                 | TypeDef AlexPosn String (Maybe [SortArg]) Type
-                 | ViewTypeDef AlexPosn String (Maybe [SortArg]) Type
-                 | SumType { typeName :: String, typeArgs :: Maybe [SortArg], _leaves :: [Leaf] }
-                 | SumViewType { typeName :: String, typeArgs :: Maybe [SortArg], _leaves :: [Leaf] }
-                 | AbsType AlexPosn String (Maybe [SortArg]) (Maybe Type)
-                 | AbsViewType AlexPosn String (Maybe [SortArg]) (Maybe Type)
+                 | TypeDef AlexPosn String SortArgs Type
+                 | ViewTypeDef AlexPosn String SortArgs Type
+                 | SumType { typeName :: String, typeArgs :: SortArgs, _leaves :: [Leaf] }
+                 | SumViewType { typeName :: String, typeArgs :: SortArgs, _leaves :: [Leaf] }
+                 | AbsType AlexPosn String SortArgs (Maybe Type)
+                 | AbsViewType AlexPosn String SortArgs (Maybe Type)
                  | AbsView AlexPosn String [Arg] (Maybe Type)
-                 | AbsVT0p AlexPosn String (Maybe [SortArg]) (Maybe Type)
+                 | AbsVT0p AlexPosn String SortArgs (Maybe Type)
                  | AbsT0p AlexPosn String Type
                  | ViewDef AlexPosn String [Arg] Type
                  | OverloadOp AlexPosn BinOp Name
                  | OverloadIdent AlexPosn String Name (Maybe Int)
                  | Comment String
-                 | DataProp AlexPosn String [Arg] [DataPropLeaf]
+                 | DataProp AlexPosn String SortArgs [DataPropLeaf]
                  | Extern AlexPosn Declaration
                  | Define String
-                 | SortDef AlexPosn String Type
+                 | SortDef AlexPosn String Sort
                  | AndD Declaration Declaration
                  | Local AlexPosn ATS ATS
                  | AbsProp AlexPosn String [Arg]
@@ -193,6 +196,7 @@
           | T0p Addendum -- ^ t@ype
           | Vt0p Addendum -- ^ vt@ype
           | Addr
+          | View AlexPosn Addendum -- ^ view
           deriving (Show, Eq, Generic, NFData)
 
 -- FIXME a type for sorts?
