diff --git a/crates/aiken-lang/src/parser.rs b/crates/aiken-lang/src/parser.rs
index dc4b04b3..78c1e87c 100644
--- a/crates/aiken-lang/src/parser.rs
+++ b/crates/aiken-lang/src/parser.rs
@@ -84,4 +84,28 @@ mod tests {
             "#
         );
     }
+
+    #[test]
+    fn parse_unicode_offset_1() {
+        assert_module!(
+            r#"
+            fn foo() {
+              let x = "★"
+              x
+            }
+            "#
+        );
+    }
+
+    #[test]
+    fn parse_unicode_offset_2() {
+        assert_module!(
+            r#"
+            fn foo() {
+              let x = "*"
+              x
+            }
+            "#
+        );
+    }
 }
diff --git a/crates/aiken-lang/src/parser/definition/data_type.rs b/crates/aiken-lang/src/parser/definition/data_type.rs
index 14083cf0..cc9ff73e 100644
--- a/crates/aiken-lang/src/parser/definition/data_type.rs
+++ b/crates/aiken-lang/src/parser/definition/data_type.rs
@@ -92,3 +92,32 @@ fn labeled_constructor_type_args(
         .allow_trailing()
         .delimited_by(just(Token::LeftBrace), just(Token::RightBrace))
 }
+
+#[cfg(test)]
+mod tests {
+    use crate::assert_definition;
+
+    #[test]
+    fn custom_type() {
+        assert_definition!(
+            r#"
+            type Option {
+              Some(a, Int)
+              None
+              Wow { name: Int, age: Int }
+            }
+            "#
+        );
+    }
+
+    #[test]
+    fn opaque_type() {
+        assert_definition!(
+            r#"
+            pub opaque type User {
+              name: _w
+            }
+            "#
+        );
+    }
+}
diff --git a/crates/aiken-lang/src/parser/definition/snapshots/custom_type.snap b/crates/aiken-lang/src/parser/definition/snapshots/custom_type.snap
new file mode 100644
index 00000000..53760f6c
--- /dev/null
+++ b/crates/aiken-lang/src/parser/definition/snapshots/custom_type.snap
@@ -0,0 +1,92 @@
+---
+source: crates/aiken-lang/src/parser/definition/data_type.rs
+description: "Code:\n\ntype Option {\n  Some(a, Int)\n  None\n  Wow { name: Int, age: Int }\n}\n"
+---
+DataType(
+    DataType {
+        constructors: [
+            RecordConstructor {
+                location: 19..31,
+                name: "Some",
+                arguments: [
+                    RecordConstructorArg {
+                        label: None,
+                        annotation: Var {
+                            location: 24..25,
+                            name: "a",
+                        },
+                        location: 24..25,
+                        tipo: (),
+                        doc: None,
+                    },
+                    RecordConstructorArg {
+                        label: None,
+                        annotation: Constructor {
+                            location: 27..30,
+                            module: None,
+                            name: "Int",
+                            arguments: [],
+                        },
+                        location: 27..30,
+                        tipo: (),
+                        doc: None,
+                    },
+                ],
+                doc: None,
+                sugar: false,
+            },
+            RecordConstructor {
+                location: 34..38,
+                name: "None",
+                arguments: [],
+                doc: None,
+                sugar: false,
+            },
+            RecordConstructor {
+                location: 41..68,
+                name: "Wow",
+                arguments: [
+                    RecordConstructorArg {
+                        label: Some(
+                            "name",
+                        ),
+                        annotation: Constructor {
+                            location: 53..56,
+                            module: None,
+                            name: "Int",
+                            arguments: [],
+                        },
+                        location: 47..56,
+                        tipo: (),
+                        doc: None,
+                    },
+                    RecordConstructorArg {
+                        label: Some(
+                            "age",
+                        ),
+                        annotation: Constructor {
+                            location: 63..66,
+                            module: None,
+                            name: "Int",
+                            arguments: [],
+                        },
+                        location: 58..66,
+                        tipo: (),
+                        doc: None,
+                    },
+                ],
+                doc: None,
+                sugar: false,
+            },
+        ],
+        doc: None,
+        location: 0..70,
+        name: "Option",
+        opaque: false,
+        parameters: [
+            "a",
+        ],
+        public: false,
+        typed_parameters: [],
+    },
+)
diff --git a/crates/aiken-lang/src/parser/definition/snapshots/opaque_type.snap b/crates/aiken-lang/src/parser/definition/snapshots/opaque_type.snap
new file mode 100644
index 00000000..2ed29bba
--- /dev/null
+++ b/crates/aiken-lang/src/parser/definition/snapshots/opaque_type.snap
@@ -0,0 +1,37 @@
+---
+source: crates/aiken-lang/src/parser/definition/data_type.rs
+description: "Code:\n\npub opaque type User {\n  name: _w\n}\n"
+---
+DataType(
+    DataType {
+        constructors: [
+            RecordConstructor {
+                location: 21..35,
+                name: "User",
+                arguments: [
+                    RecordConstructorArg {
+                        label: Some(
+                            "name",
+                        ),
+                        annotation: Hole {
+                            location: 31..33,
+                            name: "_w",
+                        },
+                        location: 25..33,
+                        tipo: (),
+                        doc: None,
+                    },
+                ],
+                doc: None,
+                sugar: true,
+            },
+        ],
+        doc: None,
+        location: 0..35,
+        name: "User",
+        opaque: true,
+        parameters: [],
+        public: true,
+        typed_parameters: [],
+    },
+)
diff --git a/crates/aiken-lang/src/parser/expr/assignment.rs b/crates/aiken-lang/src/parser/expr/assignment.rs
index 0759f223..c9bd1c1c 100644
--- a/crates/aiken-lang/src/parser/expr/assignment.rs
+++ b/crates/aiken-lang/src/parser/expr/assignment.rs
@@ -50,6 +50,11 @@ mod tests {
 
     #[test]
     fn let_bindings() {
-        assert_expr!(r#"let thing = [ 1, 2, a ]"#);
+        assert_expr!("let thing = [ 1, 2, a ]");
+    }
+
+    #[test]
+    fn expect() {
+        assert_expr!("expect Some(x) = something.field");
     }
 }
diff --git a/crates/aiken-lang/src/parser/expr/block.rs b/crates/aiken-lang/src/parser/expr/block.rs
index 320723f2..e555de05 100644
--- a/crates/aiken-lang/src/parser/expr/block.rs
+++ b/crates/aiken-lang/src/parser/expr/block.rs
@@ -18,3 +18,21 @@ pub fn parser(
         ),
     ))
 }
+
+#[cfg(test)]
+mod tests {
+    use crate::assert_expr;
+
+    #[test]
+    fn block_basic() {
+        assert_expr!(
+            r#"
+            let b = {
+              let x = 4
+
+              x + 5
+            }
+            "#
+        );
+    }
+}
diff --git a/crates/aiken-lang/src/parser/expr/bytearray.rs b/crates/aiken-lang/src/parser/expr/bytearray.rs
index 66b356f7..756f6312 100644
--- a/crates/aiken-lang/src/parser/expr/bytearray.rs
+++ b/crates/aiken-lang/src/parser/expr/bytearray.rs
@@ -12,3 +12,23 @@ pub fn parser() -> impl Parser {
         preferred_format,
     })
 }
+
+#[cfg(test)]
+mod tests {
+    use crate::assert_expr;
+
+    #[test]
+    fn bytearray_basic() {
+        assert_expr!("#[0, 170, 255]");
+    }
+
+    #[test]
+    fn bytearray_base16() {
+        assert_expr!("#\"00aaff\"");
+    }
+
+    #[test]
+    fn bytearray_utf8_encoded() {
+        assert_expr!("\"aiken\"");
+    }
+}
diff --git a/crates/aiken-lang/src/parser/expr/mod.rs b/crates/aiken-lang/src/parser/expr/mod.rs
index d6e09842..db134436 100644
--- a/crates/aiken-lang/src/parser/expr/mod.rs
+++ b/crates/aiken-lang/src/parser/expr/mod.rs
@@ -364,3 +364,42 @@ pub fn parser(
             })
     })
 }
+
+#[cfg(test)]
+mod tests {
+    use crate::assert_expr;
+
+    #[test]
+    fn plus_binop() {
+        assert_expr!("a + 1");
+    }
+
+    #[test]
+    fn pipeline() {
+        assert_expr!(
+            r#"
+            a + 2
+            |> add_one
+            |> add_one
+            "#
+        );
+    }
+
+    #[test]
+    fn field_access() {
+        assert_expr!("user.name");
+    }
+
+    #[test]
+    fn function_invoke() {
+        assert_expr!(
+            r#"
+            let x = add_one(3)
+
+            let map_add_x = list.map(_, fn (y) { x + y })
+
+            map_add_x([ 1, 2, 3 ])
+            "#
+        );
+    }
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/block_basic.snap b/crates/aiken-lang/src/parser/expr/snapshots/block_basic.snap
new file mode 100644
index 00000000..7d07f718
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/block_basic.snap
@@ -0,0 +1,49 @@
+---
+source: crates/aiken-lang/src/parser/expr/block.rs
+description: "Code:\n\nlet b = {\n  let x = 4\n\n  x + 5\n}\n"
+---
+Assignment {
+    location: 0..32,
+    value: Sequence {
+        location: 12..30,
+        expressions: [
+            Assignment {
+                location: 12..21,
+                value: Int {
+                    location: 20..21,
+                    value: "4",
+                    base: Decimal {
+                        numeric_underscore: false,
+                    },
+                },
+                pattern: Var {
+                    location: 16..17,
+                    name: "x",
+                },
+                kind: Let,
+                annotation: None,
+            },
+            BinOp {
+                location: 25..30,
+                name: AddInt,
+                left: Var {
+                    location: 25..26,
+                    name: "x",
+                },
+                right: Int {
+                    location: 29..30,
+                    value: "5",
+                    base: Decimal {
+                        numeric_underscore: false,
+                    },
+                },
+            },
+        ],
+    },
+    pattern: Var {
+        location: 4..5,
+        name: "b",
+    },
+    kind: Let,
+    annotation: None,
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/bytearray_base16.snap b/crates/aiken-lang/src/parser/expr/snapshots/bytearray_base16.snap
new file mode 100644
index 00000000..36d36a2a
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/bytearray_base16.snap
@@ -0,0 +1,13 @@
+---
+source: crates/aiken-lang/src/parser/expr/bytearray.rs
+description: "Code:\n\n#\"00aaff\""
+---
+ByteArray {
+    location: 0..9,
+    bytes: [
+        0,
+        170,
+        255,
+    ],
+    preferred_format: HexadecimalString,
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/bytearray_basic.snap b/crates/aiken-lang/src/parser/expr/snapshots/bytearray_basic.snap
new file mode 100644
index 00000000..58c6b407
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/bytearray_basic.snap
@@ -0,0 +1,17 @@
+---
+source: crates/aiken-lang/src/parser/expr/bytearray.rs
+description: "Code:\n\n#[0, 170, 255]"
+---
+ByteArray {
+    location: 0..14,
+    bytes: [
+        0,
+        170,
+        255,
+    ],
+    preferred_format: ArrayOfBytes(
+        Decimal {
+            numeric_underscore: false,
+        },
+    ),
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/bytearray_utf8_encoded.snap b/crates/aiken-lang/src/parser/expr/snapshots/bytearray_utf8_encoded.snap
new file mode 100644
index 00000000..611eefcf
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/bytearray_utf8_encoded.snap
@@ -0,0 +1,15 @@
+---
+source: crates/aiken-lang/src/parser/expr/bytearray.rs
+description: "Code:\n\n\"aiken\""
+---
+ByteArray {
+    location: 0..7,
+    bytes: [
+        97,
+        105,
+        107,
+        101,
+        110,
+    ],
+    preferred_format: Utf8String,
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/expect.snap b/crates/aiken-lang/src/parser/expr/snapshots/expect.snap
new file mode 100644
index 00000000..440e0855
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/expect.snap
@@ -0,0 +1,36 @@
+---
+source: crates/aiken-lang/src/parser/expr/assignment.rs
+description: "Code:\n\nexpect Some(x) = something.field"
+---
+Assignment {
+    location: 0..32,
+    value: FieldAccess {
+        location: 17..32,
+        label: "field",
+        container: Var {
+            location: 17..26,
+            name: "something",
+        },
+    },
+    pattern: Constructor {
+        is_record: false,
+        location: 7..14,
+        name: "Some",
+        arguments: [
+            CallArg {
+                label: None,
+                location: 12..13,
+                value: Var {
+                    location: 12..13,
+                    name: "x",
+                },
+            },
+        ],
+        module: None,
+        constructor: (),
+        with_spread: false,
+        tipo: (),
+    },
+    kind: Expect,
+    annotation: None,
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/field_access.snap b/crates/aiken-lang/src/parser/expr/snapshots/field_access.snap
new file mode 100644
index 00000000..f429b58e
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/field_access.snap
@@ -0,0 +1,12 @@
+---
+source: crates/aiken-lang/src/parser/expr/mod.rs
+description: "Code:\n\nuser.name"
+---
+FieldAccess {
+    location: 0..9,
+    label: "name",
+    container: Var {
+        location: 0..4,
+        name: "user",
+    },
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/function_invoke.snap b/crates/aiken-lang/src/parser/expr/snapshots/function_invoke.snap
new file mode 100644
index 00000000..411a7f4f
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/function_invoke.snap
@@ -0,0 +1,160 @@
+---
+source: crates/aiken-lang/src/parser/expr/mod.rs
+description: "Code:\n\nlet x = add_one(3)\n\nlet map_add_x = list.map(_, fn (y) { x + y })\n\nmap_add_x([ 1, 2, 3 ])\n"
+---
+Sequence {
+    location: 0..89,
+    expressions: [
+        Assignment {
+            location: 0..18,
+            value: Call {
+                arguments: [
+                    CallArg {
+                        label: None,
+                        location: 16..17,
+                        value: Int {
+                            location: 16..17,
+                            value: "3",
+                            base: Decimal {
+                                numeric_underscore: false,
+                            },
+                        },
+                    },
+                ],
+                fun: Var {
+                    location: 8..15,
+                    name: "add_one",
+                },
+                location: 8..18,
+            },
+            pattern: Var {
+                location: 4..5,
+                name: "x",
+            },
+            kind: Let,
+            annotation: None,
+        },
+        Assignment {
+            location: 20..65,
+            value: Fn {
+                location: 36..65,
+                fn_style: Capture,
+                arguments: [
+                    Arg {
+                        arg_name: Named {
+                            name: "_capture__0",
+                            label: "_capture__0",
+                            location: 0..0,
+                            is_validator_param: false,
+                        },
+                        location: 0..0,
+                        annotation: None,
+                        tipo: (),
+                    },
+                ],
+                body: Call {
+                    arguments: [
+                        CallArg {
+                            label: None,
+                            location: 45..46,
+                            value: Var {
+                                location: 45..46,
+                                name: "_capture__0",
+                            },
+                        },
+                        CallArg {
+                            label: None,
+                            location: 48..64,
+                            value: Fn {
+                                location: 48..64,
+                                fn_style: Plain,
+                                arguments: [
+                                    Arg {
+                                        arg_name: Named {
+                                            name: "y",
+                                            label: "y",
+                                            location: 52..53,
+                                            is_validator_param: false,
+                                        },
+                                        location: 52..53,
+                                        annotation: None,
+                                        tipo: (),
+                                    },
+                                ],
+                                body: BinOp {
+                                    location: 57..62,
+                                    name: AddInt,
+                                    left: Var {
+                                        location: 57..58,
+                                        name: "x",
+                                    },
+                                    right: Var {
+                                        location: 61..62,
+                                        name: "y",
+                                    },
+                                },
+                                return_annotation: None,
+                            },
+                        },
+                    ],
+                    fun: FieldAccess {
+                        location: 36..44,
+                        label: "map",
+                        container: Var {
+                            location: 36..40,
+                            name: "list",
+                        },
+                    },
+                    location: 36..65,
+                },
+                return_annotation: None,
+            },
+            pattern: Var {
+                location: 24..33,
+                name: "map_add_x",
+            },
+            kind: Let,
+            annotation: None,
+        },
+        Call {
+            arguments: [
+                CallArg {
+                    label: None,
+                    location: 77..88,
+                    value: List {
+                        location: 77..88,
+                        elements: [
+                            Int {
+                                location: 79..80,
+                                value: "1",
+                                base: Decimal {
+                                    numeric_underscore: false,
+                                },
+                            },
+                            Int {
+                                location: 82..83,
+                                value: "2",
+                                base: Decimal {
+                                    numeric_underscore: false,
+                                },
+                            },
+                            Int {
+                                location: 85..86,
+                                value: "3",
+                                base: Decimal {
+                                    numeric_underscore: false,
+                                },
+                            },
+                        ],
+                        tail: None,
+                    },
+                },
+            ],
+            fun: Var {
+                location: 67..76,
+                name: "map_add_x",
+            },
+            location: 67..89,
+        },
+    ],
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/parse_tuple.snap b/crates/aiken-lang/src/parser/expr/snapshots/parse_tuple.snap
new file mode 100644
index 00000000..857616c8
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/parse_tuple.snap
@@ -0,0 +1,95 @@
+---
+source: crates/aiken-lang/src/parser/expr/tuple.rs
+description: "Code:\n\nlet tuple = (1, 2, 3, 4)\ntuple.1st + tuple.2nd + tuple.3rd + tuple.4th\n"
+---
+Sequence {
+    location: 0..70,
+    expressions: [
+        Assignment {
+            location: 0..24,
+            value: Tuple {
+                location: 12..24,
+                elems: [
+                    Int {
+                        location: 13..14,
+                        value: "1",
+                        base: Decimal {
+                            numeric_underscore: false,
+                        },
+                    },
+                    Int {
+                        location: 16..17,
+                        value: "2",
+                        base: Decimal {
+                            numeric_underscore: false,
+                        },
+                    },
+                    Int {
+                        location: 19..20,
+                        value: "3",
+                        base: Decimal {
+                            numeric_underscore: false,
+                        },
+                    },
+                    Int {
+                        location: 22..23,
+                        value: "4",
+                        base: Decimal {
+                            numeric_underscore: false,
+                        },
+                    },
+                ],
+            },
+            pattern: Var {
+                location: 4..9,
+                name: "tuple",
+            },
+            kind: Let,
+            annotation: None,
+        },
+        BinOp {
+            location: 25..70,
+            name: AddInt,
+            left: BinOp {
+                location: 25..58,
+                name: AddInt,
+                left: BinOp {
+                    location: 25..46,
+                    name: AddInt,
+                    left: TupleIndex {
+                        location: 25..34,
+                        index: 0,
+                        tuple: Var {
+                            location: 25..30,
+                            name: "tuple",
+                        },
+                    },
+                    right: TupleIndex {
+                        location: 37..46,
+                        index: 1,
+                        tuple: Var {
+                            location: 37..42,
+                            name: "tuple",
+                        },
+                    },
+                },
+                right: TupleIndex {
+                    location: 49..58,
+                    index: 2,
+                    tuple: Var {
+                        location: 49..54,
+                        name: "tuple",
+                    },
+                },
+            },
+            right: TupleIndex {
+                location: 61..70,
+                index: 3,
+                tuple: Var {
+                    location: 61..66,
+                    name: "tuple",
+                },
+            },
+        },
+    ],
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/parse_tuple2.snap b/crates/aiken-lang/src/parser/expr/snapshots/parse_tuple2.snap
new file mode 100644
index 00000000..634d6184
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/parse_tuple2.snap
@@ -0,0 +1,54 @@
+---
+source: crates/aiken-lang/src/parser/expr/tuple.rs
+description: "Code:\n\nlet a = foo(14)\n(a, 42)\n"
+---
+Sequence {
+    location: 0..23,
+    expressions: [
+        Assignment {
+            location: 0..15,
+            value: Call {
+                arguments: [
+                    CallArg {
+                        label: None,
+                        location: 12..14,
+                        value: Int {
+                            location: 12..14,
+                            value: "14",
+                            base: Decimal {
+                                numeric_underscore: false,
+                            },
+                        },
+                    },
+                ],
+                fun: Var {
+                    location: 8..11,
+                    name: "foo",
+                },
+                location: 8..15,
+            },
+            pattern: Var {
+                location: 4..5,
+                name: "a",
+            },
+            kind: Let,
+            annotation: None,
+        },
+        Tuple {
+            location: 16..23,
+            elems: [
+                Var {
+                    location: 17..18,
+                    name: "a",
+                },
+                Int {
+                    location: 20..22,
+                    value: "42",
+                    base: Decimal {
+                        numeric_underscore: false,
+                    },
+                },
+            ],
+        },
+    ],
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/pipeline.snap b/crates/aiken-lang/src/parser/expr/snapshots/pipeline.snap
new file mode 100644
index 00000000..f98b6a8c
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/pipeline.snap
@@ -0,0 +1,32 @@
+---
+source: crates/aiken-lang/src/parser/expr/mod.rs
+description: "Code:\n\na + 2\n|> add_one\n|> add_one\n"
+---
+PipeLine {
+    expressions: [
+        BinOp {
+            location: 0..5,
+            name: AddInt,
+            left: Var {
+                location: 0..1,
+                name: "a",
+            },
+            right: Int {
+                location: 4..5,
+                value: "2",
+                base: Decimal {
+                    numeric_underscore: false,
+                },
+            },
+        },
+        Var {
+            location: 9..16,
+            name: "add_one",
+        },
+        Var {
+            location: 20..27,
+            name: "add_one",
+        },
+    ],
+    one_liner: false,
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/plus_binop.snap b/crates/aiken-lang/src/parser/expr/snapshots/plus_binop.snap
new file mode 100644
index 00000000..397597ec
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/plus_binop.snap
@@ -0,0 +1,19 @@
+---
+source: crates/aiken-lang/src/parser/expr/mod.rs
+description: "Code:\n\na + 1"
+---
+BinOp {
+    location: 0..5,
+    name: AddInt,
+    left: Var {
+        location: 0..1,
+        name: "a",
+    },
+    right: Int {
+        location: 4..5,
+        value: "1",
+        base: Decimal {
+            numeric_underscore: false,
+        },
+    },
+}
diff --git a/crates/aiken-lang/src/parser/expr/snapshots/string_basic.snap b/crates/aiken-lang/src/parser/expr/snapshots/string_basic.snap
new file mode 100644
index 00000000..1cdd1ba9
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/snapshots/string_basic.snap
@@ -0,0 +1,8 @@
+---
+source: crates/aiken-lang/src/parser/expr/string.rs
+description: "Code:\n\n@\"aiken\""
+---
+String {
+    location: 0..8,
+    value: "aiken",
+}
diff --git a/crates/aiken-lang/src/parser/expr/string.rs b/crates/aiken-lang/src/parser/expr/string.rs
index ca5c94ba..d1c07acf 100644
--- a/crates/aiken-lang/src/parser/expr/string.rs
+++ b/crates/aiken-lang/src/parser/expr/string.rs
@@ -31,3 +31,13 @@ pub fn flexible(expr: UntypedExpr) -> UntypedExpr {
         _ => expr,
     }
 }
+
+#[cfg(test)]
+mod tests {
+    use crate::assert_expr;
+
+    #[test]
+    fn string_basic() {
+        assert_expr!("@\"aiken\"");
+    }
+}
diff --git a/crates/aiken-lang/src/parser/expr/tuple.rs b/crates/aiken-lang/src/parser/expr/tuple.rs
index 6f1e1bbf..3b02f947 100644
--- a/crates/aiken-lang/src/parser/expr/tuple.rs
+++ b/crates/aiken-lang/src/parser/expr/tuple.rs
@@ -21,3 +21,28 @@ pub fn parser(
             elems,
         })
 }
+
+#[cfg(test)]
+mod tests {
+    use crate::assert_expr;
+
+    #[test]
+    fn parse_tuple() {
+        assert_expr!(
+            r#"
+            let tuple = (1, 2, 3, 4)
+            tuple.1st + tuple.2nd + tuple.3rd + tuple.4th
+            "#
+        );
+    }
+
+    #[test]
+    fn parse_tuple2() {
+        assert_expr!(
+            r#"
+            let a = foo(14)
+            (a, 42)
+            "#
+        );
+    }
+}
diff --git a/crates/aiken-lang/src/parser/expr/when/mod.rs b/crates/aiken-lang/src/parser/expr/when/mod.rs
index 13c2ed91..53b47627 100644
--- a/crates/aiken-lang/src/parser/expr/when/mod.rs
+++ b/crates/aiken-lang/src/parser/expr/when/mod.rs
@@ -28,3 +28,25 @@ pub fn parser(
             clauses,
         })
 }
+
+#[cfg(test)]
+mod tests {
+    use crate::assert_expr;
+
+    #[test]
+    fn when_basic() {
+        assert_expr!(
+            r#"
+            when a is {
+              2 if x > 1 -> 3
+              1 | 4 | 5 -> {
+                let amazing = 5
+                amazing
+              }
+              3 -> 9
+              _ -> 4
+            }
+            "#
+        );
+    }
+}
diff --git a/crates/aiken-lang/src/parser/expr/when/snapshots/when_basic.snap b/crates/aiken-lang/src/parser/expr/when/snapshots/when_basic.snap
new file mode 100644
index 00000000..7d5056b6
--- /dev/null
+++ b/crates/aiken-lang/src/parser/expr/when/snapshots/when_basic.snap
@@ -0,0 +1,140 @@
+---
+source: crates/aiken-lang/src/parser/expr/when/mod.rs
+description: "Code:\n\nwhen a is {\n  2 if x > 1 -> 3\n  1 | 4 | 5 -> {\n    let amazing = 5\n    amazing\n  }\n  3 -> 9\n  _ -> 4\n}\n"
+---
+When {
+    location: 0..102,
+    subject: Var {
+        location: 5..6,
+        name: "a",
+    },
+    clauses: [
+        UntypedClause {
+            location: 14..29,
+            patterns: [
+                Int {
+                    location: 14..15,
+                    value: "2",
+                    base: Decimal {
+                        numeric_underscore: false,
+                    },
+                },
+            ],
+            guard: Some(
+                GtInt {
+                    location: 19..24,
+                    left: Var {
+                        location: 19..20,
+                        tipo: (),
+                        name: "x",
+                    },
+                    right: Constant(
+                        Int {
+                            location: 23..24,
+                            value: "1",
+                            base: Decimal {
+                                numeric_underscore: false,
+                            },
+                        },
+                    ),
+                },
+            ),
+            then: Int {
+                location: 28..29,
+                value: "3",
+                base: Decimal {
+                    numeric_underscore: false,
+                },
+            },
+        },
+        UntypedClause {
+            location: 32..82,
+            patterns: [
+                Int {
+                    location: 32..33,
+                    value: "1",
+                    base: Decimal {
+                        numeric_underscore: false,
+                    },
+                },
+                Int {
+                    location: 36..37,
+                    value: "4",
+                    base: Decimal {
+                        numeric_underscore: false,
+                    },
+                },
+                Int {
+                    location: 40..41,
+                    value: "5",
+                    base: Decimal {
+                        numeric_underscore: false,
+                    },
+                },
+            ],
+            guard: None,
+            then: Sequence {
+                location: 51..78,
+                expressions: [
+                    Assignment {
+                        location: 51..66,
+                        value: Int {
+                            location: 65..66,
+                            value: "5",
+                            base: Decimal {
+                                numeric_underscore: false,
+                            },
+                        },
+                        pattern: Var {
+                            location: 55..62,
+                            name: "amazing",
+                        },
+                        kind: Let,
+                        annotation: None,
+                    },
+                    Var {
+                        location: 71..78,
+                        name: "amazing",
+                    },
+                ],
+            },
+        },
+        UntypedClause {
+            location: 85..91,
+            patterns: [
+                Int {
+                    location: 85..86,
+                    value: "3",
+                    base: Decimal {
+                        numeric_underscore: false,
+                    },
+                },
+            ],
+            guard: None,
+            then: Int {
+                location: 90..91,
+                value: "9",
+                base: Decimal {
+                    numeric_underscore: false,
+                },
+            },
+        },
+        UntypedClause {
+            location: 94..100,
+            patterns: [
+                Discard {
+                    name: "_",
+                    location: 94..95,
+                },
+            ],
+            guard: None,
+            then: Int {
+                location: 99..100,
+                value: "4",
+                base: Decimal {
+                    numeric_underscore: false,
+                },
+            },
+        },
+    ],
+}
diff --git a/crates/aiken-lang/src/tests/snapshots/parse_unicode_offset_1.snap b/crates/aiken-lang/src/snapshots/parse_unicode_offset_1.snap
similarity index 97%
rename from crates/aiken-lang/src/tests/snapshots/parse_unicode_offset_1.snap
rename to crates/aiken-lang/src/snapshots/parse_unicode_offset_1.snap
index fd21a8e8..b7e86215 100644
--- a/crates/aiken-lang/src/tests/snapshots/parse_unicode_offset_1.snap
+++ b/crates/aiken-lang/src/snapshots/parse_unicode_offset_1.snap
@@ -1,5 +1,5 @@
 ---
-source: crates/aiken-lang/src/tests/parser.rs
+source: crates/aiken-lang/src/parser.rs
 description: "Code:\n\nfn foo() {\n  let x = \"★\"\n  x\n}\n"
 ---
 Module {
diff --git a/crates/aiken-lang/src/tests/snapshots/parse_unicode_offset_2.snap b/crates/aiken-lang/src/snapshots/parse_unicode_offset_2.snap
similarity index 96%
rename from crates/aiken-lang/src/tests/snapshots/parse_unicode_offset_2.snap
rename to crates/aiken-lang/src/snapshots/parse_unicode_offset_2.snap
index f0186e94..b8bb738f 100644
--- a/crates/aiken-lang/src/tests/snapshots/parse_unicode_offset_2.snap
+++ b/crates/aiken-lang/src/snapshots/parse_unicode_offset_2.snap
@@ -1,5 +1,5 @@
 ---
-source: crates/aiken-lang/src/tests/parser.rs
+source: crates/aiken-lang/src/parser.rs
 description: "Code:\n\nfn foo() {\n  let x = \"*\"\n  x\n}\n"
 ---
 Module {
diff --git a/crates/aiken-lang/src/tests/mod.rs b/crates/aiken-lang/src/tests/mod.rs
index 0b33bec1..18af907b 100644
--- a/crates/aiken-lang/src/tests/mod.rs
+++ b/crates/aiken-lang/src/tests/mod.rs
@@ -1,4 +1,3 @@
 mod check;
 mod format;
 mod lexer;
-mod parser;
diff --git a/crates/aiken-lang/src/tests/parser.rs b/crates/aiken-lang/src/tests/parser.rs
deleted file mode 100644
index 7bc5c6c2..00000000
--- a/crates/aiken-lang/src/tests/parser.rs
+++ /dev/null
@@ -1,204 +0,0 @@
-use crate::assert_module;
-
-#[test]
-fn custom_type() {
-    assert_module!(
-        r#"
-        type Option {
-          Some(a, Int)
-          None
-          Wow { name: Int, age: Int }
-        }
-        "#
-    );
-}
-
-#[test]
-fn opaque_type() {
-    assert_module!(
-        r#"
-        pub opaque type User {
-          name: _w
-        }
-        "#
-    );
-}
-
-#[test]
-fn expect() {
-    assert_module!(
-        r#"
-        pub fn run() {
-            expect Some(x) = something.field
-            x.other_field
-        }
-        "#
-    );
-}
-
-#[test]
-fn plus_binop() {
-    assert_module!(
-        r#"
-        pub fn add_one(a) -> Int {
-          a + 1
-        }
-        "#
-    );
-}
-
-#[test]
-fn pipeline() {
-    assert_module!(
-        r#"
-        pub fn thing(thing a: Int) {
-          a + 2
-          |> add_one
-          |> add_one
-        }
-        "#
-    );
-}
-
-#[test]
-fn block() {
-    assert_module!(
-        r#"
-        pub fn wow2(a: Int){
-          let b = {
-            let x = 4
-
-            x + 5
-          }
-
-          b
-        }
-        "#
-    );
-}
-
-#[test]
-fn when() {
-    assert_module!(
-        r#"
-        pub fn wow2(a: Int){
-          when a is {
-            2 -> 3
-            1 | 4 | 5 -> {
-              let amazing = 5
-              amazing
-            }
-            3 -> 9
-            _ -> 4
-          }
-        }
-        "#
-    );
-}
-
-#[test]
-fn field_access() {
-    assert_module!(
-        r#"
-        fn name(user: User) {
-          user.name
-        }
-        "#
-    );
-}
-
-#[test]
-fn call() {
-    assert_module!(
-        r#"
-        fn calls() {
-          let x = add_one(3)
-
-          let map_add_x = list.map(_, fn (y) { x + y })
-
-          map_add_x([ 1, 2, 3 ])
-        }
-        "#
-    );
-}
-
-#[test]
-fn parse_tuple() {
-    assert_module!(
-        r#"
-        fn foo() {
-          let tuple = (1, 2, 3, 4)
-          tuple.1st + tuple.2nd + tuple.3rd + tuple.4th
-        }
-        "#
-    );
-}
-
-#[test]
-fn parse_tuple2() {
-    assert_module!(
-        r#"
-        fn foo() {
-          let a = foo(14)
-          (a, 42)
-        }
-        "#
-    );
-}
-
-#[test]
-fn plain_bytearray_literals() {
-    assert_module!(
-        r#"
-        pub const my_policy_id = #[0, 170, 255]
-        "#
-    );
-}
-
-#[test]
-fn base16_bytearray_literals() {
-    assert_module!(
-        r#"
-        pub const my_policy_id = #"00aaff"
-
-        pub fn foo() {
-            my_policy_id == #"00aaff"
-        }
-        "#
-    );
-}
-
-#[test]
-fn function_invoke() {
-    assert_module!(
-        r#"
-        fn foo() {
-            let a = bar(42)
-        }
-        "#
-    );
-}
-
-#[test]
-fn parse_unicode_offset_1() {
-    assert_module!(
-        r#"
-        fn foo() {
-          let x = "★"
-          x
-        }
-        "#
-    );
-}
-
-#[test]
-fn parse_unicode_offset_2() {
-    assert_module!(
-        r#"
-        fn foo() {
-          let x = "*"
-          x
-        }
-        "#
-    );
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/base16_bytearray_literals.snap b/crates/aiken-lang/src/tests/snapshots/base16_bytearray_literals.snap
deleted file mode 100644
index 19784cc6..00000000
--- a/crates/aiken-lang/src/tests/snapshots/base16_bytearray_literals.snap
+++ /dev/null
@@ -1,61 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub const my_policy_id = #\"00aaff\"\n\npub fn foo() {\n    my_policy_id == #\"00aaff\"\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        ModuleConstant(
-            ModuleConstant {
-                doc: None,
-                location: 0..34,
-                public: true,
-                name: "my_policy_id",
-                annotation: None,
-                value: ByteArray {
-                    location: 25..34,
-                    bytes: [
-                        0,
-                        170,
-                        255,
-                    ],
-                    preferred_format: HexadecimalString,
-                },
-                tipo: (),
-            },
-        ),
-        Fn(
-            Function {
-                arguments: [],
-                body: BinOp {
-                    location: 55..80,
-                    name: Eq,
-                    left: Var {
-                        location: 55..67,
-                        name: "my_policy_id",
-                    },
-                    right: ByteArray {
-                        location: 71..80,
-                        bytes: [
-                            0,
-                            170,
-                            255,
-                        ],
-                        preferred_format: HexadecimalString,
-                    },
-                },
-                doc: None,
-                location: 36..48,
-                name: "foo",
-                public: true,
-                return_annotation: None,
-                return_type: (),
-                end_position: 81,
-                can_error: true,
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/block.snap b/crates/aiken-lang/src/tests/snapshots/block.snap
deleted file mode 100644
index cbb84485..00000000
--- a/crates/aiken-lang/src/tests/snapshots/block.snap
+++ /dev/null
@@ -1,98 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub fn wow2(a: Int){\n  let b = {\n    let x = 4\n\n    x + 5\n  }\n\n  b\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        Fn(
-            Function {
-                arguments: [
-                    Arg {
-                        arg_name: Named {
-                            name: "a",
-                            label: "a",
-                            location: 12..13,
-                            is_validator_param: false,
-                        },
-                        location: 12..18,
-                        annotation: Some(
-                            Constructor {
-                                location: 15..18,
-                                module: None,
-                                name: "Int",
-                                arguments: [],
-                            },
-                        ),
-                        tipo: (),
-                    },
-                ],
-                body: Sequence {
-                    location: 23..66,
-                    expressions: [
-                        Assignment {
-                            location: 23..61,
-                            value: Sequence {
-                                location: 37..57,
-                                expressions: [
-                                    Assignment {
-                                        location: 37..46,
-                                        value: Int {
-                                            location: 45..46,
-                                            value: "4",
-                                            base: Decimal {
-                                                numeric_underscore: false,
-                                            },
-                                        },
-                                        pattern: Var {
-                                            location: 41..42,
-                                            name: "x",
-                                        },
-                                        kind: Let,
-                                        annotation: None,
-                                    },
-                                    BinOp {
-                                        location: 52..57,
-                                        name: AddInt,
-                                        left: Var {
-                                            location: 52..53,
-                                            name: "x",
-                                        },
-                                        right: Int {
-                                            location: 56..57,
-                                            value: "5",
-                                            base: Decimal {
-                                                numeric_underscore: false,
-                                            },
-                                        },
-                                    },
-                                ],
-                            },
-                            pattern: Var {
-                                location: 27..28,
-                                name: "b",
-                            },
-                            kind: Let,
-                            annotation: None,
-                        },
-                        Var {
-                            location: 65..66,
-                            name: "b",
-                        },
-                    ],
-                },
-                doc: None,
-                location: 0..19,
-                name: "wow2",
-                public: true,
-                return_annotation: None,
-                return_type: (),
-                end_position: 67,
-                can_error: true,
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/call.snap b/crates/aiken-lang/src/tests/snapshots/call.snap
deleted file mode 100644
index 78f7d70f..00000000
--- a/crates/aiken-lang/src/tests/snapshots/call.snap
+++ /dev/null
@@ -1,181 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\nfn calls() {\n  let x = add_one(3)\n\n  let map_add_x = list.map(_, fn (y) { x + y })\n\n  map_add_x([ 1, 2, 3 ])\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        Fn(
-            Function {
-                arguments: [],
-                body: Sequence {
-                    location: 15..108,
-                    expressions: [
-                        Assignment {
-                            location: 15..33,
-                            value: Call {
-                                arguments: [
-                                    CallArg {
-                                        label: None,
-                                        location: 31..32,
-                                        value: Int {
-                                            location: 31..32,
-                                            value: "3",
-                                            base: Decimal {
-                                                numeric_underscore: false,
-                                            },
-                                        },
-                                    },
-                                ],
-                                fun: Var {
-                                    location: 23..30,
-                                    name: "add_one",
-                                },
-                                location: 23..33,
-                            },
-                            pattern: Var {
-                                location: 19..20,
-                                name: "x",
-                            },
-                            kind: Let,
-                            annotation: None,
-                        },
-                        Assignment {
-                            location: 37..82,
-                            value: Fn {
-                                location: 53..82,
-                                fn_style: Capture,
-                                arguments: [
-                                    Arg {
-                                        arg_name: Named {
-                                            name: "_capture__0",
-                                            label: "_capture__0",
-                                            location: 0..0,
-                                            is_validator_param: false,
-                                        },
-                                        location: 0..0,
-                                        annotation: None,
-                                        tipo: (),
-                                    },
-                                ],
-                                body: Call {
-                                    arguments: [
-                                        CallArg {
-                                            label: None,
-                                            location: 62..63,
-                                            value: Var {
-                                                location: 62..63,
-                                                name: "_capture__0",
-                                            },
-                                        },
-                                        CallArg {
-                                            label: None,
-                                            location: 65..81,
-                                            value: Fn {
-                                                location: 65..81,
-                                                fn_style: Plain,
-                                                arguments: [
-                                                    Arg {
-                                                        arg_name: Named {
-                                                            name: "y",
-                                                            label: "y",
-                                                            location: 69..70,
-                                                            is_validator_param: false,
-                                                        },
-                                                        location: 69..70,
-                                                        annotation: None,
-                                                        tipo: (),
-                                                    },
-                                                ],
-                                                body: BinOp {
-                                                    location: 74..79,
-                                                    name: AddInt,
-                                                    left: Var {
-                                                        location: 74..75,
-                                                        name: "x",
-                                                    },
-                                                    right: Var {
-                                                        location: 78..79,
-                                                        name: "y",
-                                                    },
-                                                },
-                                                return_annotation: None,
-                                            },
-                                        },
-                                    ],
-                                    fun: FieldAccess {
-                                        location: 53..61,
-                                        label: "map",
-                                        container: Var {
-                                            location: 53..57,
-                                            name: "list",
-                                        },
-                                    },
-                                    location: 53..82,
-                                },
-                                return_annotation: None,
-                            },
-                            pattern: Var {
-                                location: 41..50,
-                                name: "map_add_x",
-                            },
-                            kind: Let,
-                            annotation: None,
-                        },
-                        Call {
-                            arguments: [
-                                CallArg {
-                                    label: None,
-                                    location: 96..107,
-                                    value: List {
-                                        location: 96..107,
-                                        elements: [
-                                            Int {
-                                                location: 98..99,
-                                                value: "1",
-                                                base: Decimal {
-                                                    numeric_underscore: false,
-                                                },
-                                            },
-                                            Int {
-                                                location: 101..102,
-                                                value: "2",
-                                                base: Decimal {
-                                                    numeric_underscore: false,
-                                                },
-                                            },
-                                            Int {
-                                                location: 104..105,
-                                                value: "3",
-                                                base: Decimal {
-                                                    numeric_underscore: false,
-                                                },
-                                            },
-                                        ],
-                                        tail: None,
-                                    },
-                                },
-                            ],
-                            fun: Var {
-                                location: 86..95,
-                                name: "map_add_x",
-                            },
-                            location: 86..108,
-                        },
-                    ],
-                },
-                doc: None,
-                location: 0..10,
-                name: "calls",
-                public: false,
-                return_annotation: None,
-                return_type: (),
-                end_position: 109,
-                can_error: true,
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/custom_type.snap b/crates/aiken-lang/src/tests/snapshots/custom_type.snap
deleted file mode 100644
index 1954253c..00000000
--- a/crates/aiken-lang/src/tests/snapshots/custom_type.snap
+++ /dev/null
@@ -1,100 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\ntype Option {\n  Some(a, Int)\n  None\n  Wow { name: Int, age: Int }\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        DataType(
-            DataType {
-                constructors: [
-                    RecordConstructor {
-                        location: 19..31,
-                        name: "Some",
-                        arguments: [
-                            RecordConstructorArg {
-                                label: None,
-                                annotation: Var {
-                                    location: 24..25,
-                                    name: "a",
-                                },
-                                location: 24..25,
-                                tipo: (),
-                                doc: None,
-                            },
-                            RecordConstructorArg {
-                                label: None,
-                                annotation: Constructor {
-                                    location: 27..30,
-                                    module: None,
-                                    name: "Int",
-                                    arguments: [],
-                                },
-                                location: 27..30,
-                                tipo: (),
-                                doc: None,
-                            },
-                        ],
-                        doc: None,
-                        sugar: false,
-                    },
-                    RecordConstructor {
-                        location: 34..38,
-                        name: "None",
-                        arguments: [],
-                        doc: None,
-                        sugar: false,
-                    },
-                    RecordConstructor {
-                        location: 41..68,
-                        name: "Wow",
-                        arguments: [
-                            RecordConstructorArg {
-                                label: Some(
-                                    "name",
-                                ),
-                                annotation: Constructor {
-                                    location: 53..56,
-                                    module: None,
-                                    name: "Int",
-                                    arguments: [],
-                                },
-                                location: 47..56,
-                                tipo: (),
-                                doc: None,
-                            },
-                            RecordConstructorArg {
-                                label: Some(
-                                    "age",
-                                ),
-                                annotation: Constructor {
-                                    location: 63..66,
-                                    module: None,
-                                    name: "Int",
-                                    arguments: [],
-                                },
-                                location: 58..66,
-                                tipo: (),
-                                doc: None,
-                            },
-                        ],
-                        doc: None,
-                        sugar: false,
-                    },
-                ],
-                doc: None,
-                location: 0..70,
-                name: "Option",
-                opaque: false,
-                parameters: [
-                    "a",
-                ],
-                public: false,
-                typed_parameters: [],
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/expect.snap b/crates/aiken-lang/src/tests/snapshots/expect.snap
deleted file mode 100644
index 51329710..00000000
--- a/crates/aiken-lang/src/tests/snapshots/expect.snap
+++ /dev/null
@@ -1,70 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub fn run() {\n    expect Some(x) = something.field\n    x.other_field\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        Fn(
-            Function {
-                arguments: [],
-                body: Sequence {
-                    location: 19..69,
-                    expressions: [
-                        Assignment {
-                            location: 19..51,
-                            value: FieldAccess {
-                                location: 36..51,
-                                label: "field",
-                                container: Var {
-                                    location: 36..45,
-                                    name: "something",
-                                },
-                            },
-                            pattern: Constructor {
-                                is_record: false,
-                                location: 26..33,
-                                name: "Some",
-                                arguments: [
-                                    CallArg {
-                                        label: None,
-                                        location: 31..32,
-                                        value: Var {
-                                            location: 31..32,
-                                            name: "x",
-                                        },
-                                    },
-                                ],
-                                module: None,
-                                constructor: (),
-                                with_spread: false,
-                                tipo: (),
-                            },
-                            kind: Expect,
-                            annotation: None,
-                        },
-                        FieldAccess {
-                            location: 56..69,
-                            label: "other_field",
-                            container: Var {
-                                location: 56..57,
-                                name: "x",
-                            },
-                        },
-                    ],
-                },
-                doc: None,
-                location: 0..12,
-                name: "run",
-                public: true,
-                return_annotation: None,
-                return_type: (),
-                end_position: 70,
-                can_error: true,
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/field_access.snap b/crates/aiken-lang/src/tests/snapshots/field_access.snap
deleted file mode 100644
index c5caa08a..00000000
--- a/crates/aiken-lang/src/tests/snapshots/field_access.snap
+++ /dev/null
@@ -1,52 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\nfn name(user: User) {\n  user.name\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        Fn(
-            Function {
-                arguments: [
-                    Arg {
-                        arg_name: Named {
-                            name: "user",
-                            label: "user",
-                            location: 8..12,
-                            is_validator_param: false,
-                        },
-                        location: 8..18,
-                        annotation: Some(
-                            Constructor {
-                                location: 14..18,
-                                module: None,
-                                name: "User",
-                                arguments: [],
-                            },
-                        ),
-                        tipo: (),
-                    },
-                ],
-                body: FieldAccess {
-                    location: 24..33,
-                    label: "name",
-                    container: Var {
-                        location: 24..28,
-                        name: "user",
-                    },
-                },
-                doc: None,
-                location: 0..19,
-                name: "name",
-                public: false,
-                return_annotation: None,
-                return_type: (),
-                end_position: 34,
-                can_error: true,
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/function_invoke.snap b/crates/aiken-lang/src/tests/snapshots/function_invoke.snap
deleted file mode 100644
index 2f115edc..00000000
--- a/crates/aiken-lang/src/tests/snapshots/function_invoke.snap
+++ /dev/null
@@ -1,54 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\nfn foo() {\n    let a = bar(42)\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        Fn(
-            Function {
-                arguments: [],
-                body: Assignment {
-                    location: 15..30,
-                    value: Call {
-                        arguments: [
-                            CallArg {
-                                label: None,
-                                location: 27..29,
-                                value: Int {
-                                    location: 27..29,
-                                    value: "42",
-                                    base: Decimal {
-                                        numeric_underscore: false,
-                                    },
-                                },
-                            },
-                        ],
-                        fun: Var {
-                            location: 23..26,
-                            name: "bar",
-                        },
-                        location: 23..30,
-                    },
-                    pattern: Var {
-                        location: 19..20,
-                        name: "a",
-                    },
-                    kind: Let,
-                    annotation: None,
-                },
-                doc: None,
-                location: 0..8,
-                name: "foo",
-                public: false,
-                return_annotation: None,
-                return_type: (),
-                end_position: 31,
-                can_error: true,
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/opaque_type.snap b/crates/aiken-lang/src/tests/snapshots/opaque_type.snap
deleted file mode 100644
index 1f0426e1..00000000
--- a/crates/aiken-lang/src/tests/snapshots/opaque_type.snap
+++ /dev/null
@@ -1,45 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub opaque type User {\n  name: _w\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        DataType(
-            DataType {
-                constructors: [
-                    RecordConstructor {
-                        location: 21..35,
-                        name: "User",
-                        arguments: [
-                            RecordConstructorArg {
-                                label: Some(
-                                    "name",
-                                ),
-                                annotation: Hole {
-                                    location: 31..33,
-                                    name: "_w",
-                                },
-                                location: 25..33,
-                                tipo: (),
-                                doc: None,
-                            },
-                        ],
-                        doc: None,
-                        sugar: true,
-                    },
-                ],
-                doc: None,
-                location: 0..35,
-                name: "User",
-                opaque: true,
-                parameters: [],
-                public: true,
-                typed_parameters: [],
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/parse_tuple.snap b/crates/aiken-lang/src/tests/snapshots/parse_tuple.snap
deleted file mode 100644
index 12489418..00000000
--- a/crates/aiken-lang/src/tests/snapshots/parse_tuple.snap
+++ /dev/null
@@ -1,116 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\nfn foo() {\n  let tuple = (1, 2, 3, 4)\n  tuple.1st + tuple.2nd + tuple.3rd + tuple.4th\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        Fn(
-            Function {
-                arguments: [],
-                body: Sequence {
-                    location: 13..85,
-                    expressions: [
-                        Assignment {
-                            location: 13..37,
-                            value: Tuple {
-                                location: 25..37,
-                                elems: [
-                                    Int {
-                                        location: 26..27,
-                                        value: "1",
-                                        base: Decimal {
-                                            numeric_underscore: false,
-                                        },
-                                    },
-                                    Int {
-                                        location: 29..30,
-                                        value: "2",
-                                        base: Decimal {
-                                            numeric_underscore: false,
-                                        },
-                                    },
-                                    Int {
-                                        location: 32..33,
-                                        value: "3",
-                                        base: Decimal {
-                                            numeric_underscore: false,
-                                        },
-                                    },
-                                    Int {
-                                        location: 35..36,
-                                        value: "4",
-                                        base: Decimal {
-                                            numeric_underscore: false,
-                                        },
-                                    },
-                                ],
-                            },
-                            pattern: Var {
-                                location: 17..22,
-                                name: "tuple",
-                            },
-                            kind: Let,
-                            annotation: None,
-                        },
-                        BinOp {
-                            location: 40..85,
-                            name: AddInt,
-                            left: BinOp {
-                                location: 40..73,
-                                name: AddInt,
-                                left: BinOp {
-                                    location: 40..61,
-                                    name: AddInt,
-                                    left: TupleIndex {
-                                        location: 40..49,
-                                        index: 0,
-                                        tuple: Var {
-                                            location: 40..45,
-                                            name: "tuple",
-                                        },
-                                    },
-                                    right: TupleIndex {
-                                        location: 52..61,
-                                        index: 1,
-                                        tuple: Var {
-                                            location: 52..57,
-                                            name: "tuple",
-                                        },
-                                    },
-                                },
-                                right: TupleIndex {
-                                    location: 64..73,
-                                    index: 2,
-                                    tuple: Var {
-                                        location: 64..69,
-                                        name: "tuple",
-                                    },
-                                },
-                            },
-                            right: TupleIndex {
-                                location: 76..85,
-                                index: 3,
-                                tuple: Var {
-                                    location: 76..81,
-                                    name: "tuple",
-                                },
-                            },
-                        },
-                    ],
-                },
-                doc: None,
-                location: 0..8,
-                name: "foo",
-                public: false,
-                return_annotation: None,
-                return_type: (),
-                end_position: 86,
-                can_error: true,
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/parse_tuple2.snap b/crates/aiken-lang/src/tests/snapshots/parse_tuple2.snap
deleted file mode 100644
index 0a4185b7..00000000
--- a/crates/aiken-lang/src/tests/snapshots/parse_tuple2.snap
+++ /dev/null
@@ -1,75 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\nfn foo() {\n  let a = foo(14)\n  (a, 42)\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        Fn(
-            Function {
-                arguments: [],
-                body: Sequence {
-                    location: 13..38,
-                    expressions: [
-                        Assignment {
-                            location: 13..28,
-                            value: Call {
-                                arguments: [
-                                    CallArg {
-                                        label: None,
-                                        location: 25..27,
-                                        value: Int {
-                                            location: 25..27,
-                                            value: "14",
-                                            base: Decimal {
-                                                numeric_underscore: false,
-                                            },
-                                        },
-                                    },
-                                ],
-                                fun: Var {
-                                    location: 21..24,
-                                    name: "foo",
-                                },
-                                location: 21..28,
-                            },
-                            pattern: Var {
-                                location: 17..18,
-                                name: "a",
-                            },
-                            kind: Let,
-                            annotation: None,
-                        },
-                        Tuple {
-                            location: 31..38,
-                            elems: [
-                                Var {
-                                    location: 32..33,
-                                    name: "a",
-                                },
-                                Int {
-                                    location: 35..37,
-                                    value: "42",
-                                    base: Decimal {
-                                        numeric_underscore: false,
-                                    },
-                                },
-                            ],
-                        },
-                    ],
-                },
-                doc: None,
-                location: 0..8,
-                name: "foo",
-                public: false,
-                return_annotation: None,
-                return_type: (),
-                end_position: 39,
-                can_error: true,
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/pipeline.snap b/crates/aiken-lang/src/tests/snapshots/pipeline.snap
deleted file mode 100644
index 0112b871..00000000
--- a/crates/aiken-lang/src/tests/snapshots/pipeline.snap
+++ /dev/null
@@ -1,72 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub fn thing(thing a: Int) {\n  a + 2\n  |> add_one\n  |> add_one\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        Fn(
-            Function {
-                arguments: [
-                    Arg {
-                        arg_name: Named {
-                            name: "a",
-                            label: "thing",
-                            location: 13..20,
-                            is_validator_param: false,
-                        },
-                        location: 13..25,
-                        annotation: Some(
-                            Constructor {
-                                location: 22..25,
-                                module: None,
-                                name: "Int",
-                                arguments: [],
-                            },
-                        ),
-                        tipo: (),
-                    },
-                ],
-                body: PipeLine {
-                    expressions: [
-                        BinOp {
-                            location: 31..36,
-                            name: AddInt,
-                            left: Var {
-                                location: 31..32,
-                                name: "a",
-                            },
-                            right: Int {
-                                location: 35..36,
-                                value: "2",
-                                base: Decimal {
-                                    numeric_underscore: false,
-                                },
-                            },
-                        },
-                        Var {
-                            location: 42..49,
-                            name: "add_one",
-                        },
-                        Var {
-                            location: 55..62,
-                            name: "add_one",
-                        },
-                    ],
-                    one_liner: false,
-                },
-                doc: None,
-                location: 0..26,
-                name: "thing",
-                public: true,
-                return_annotation: None,
-                return_type: (),
-                end_position: 63,
-                can_error: true,
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/plain_bytearray_literals.snap b/crates/aiken-lang/src/tests/snapshots/plain_bytearray_literals.snap
deleted file mode 100644
index c97df391..00000000
--- a/crates/aiken-lang/src/tests/snapshots/plain_bytearray_literals.snap
+++ /dev/null
@@ -1,35 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub const my_policy_id = #[0, 170, 255]\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        ModuleConstant(
-            ModuleConstant {
-                doc: None,
-                location: 0..39,
-                public: true,
-                name: "my_policy_id",
-                annotation: None,
-                value: ByteArray {
-                    location: 25..39,
-                    bytes: [
-                        0,
-                        170,
-                        255,
-                    ],
-                    preferred_format: ArrayOfBytes(
-                        Decimal {
-                            numeric_underscore: false,
-                        },
-                    ),
-                },
-                tipo: (),
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/plus_binop.snap b/crates/aiken-lang/src/tests/snapshots/plus_binop.snap
deleted file mode 100644
index 9f52dc68..00000000
--- a/crates/aiken-lang/src/tests/snapshots/plus_binop.snap
+++ /dev/null
@@ -1,59 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub fn add_one(a) -> Int {\n  a + 1\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        Fn(
-            Function {
-                arguments: [
-                    Arg {
-                        arg_name: Named {
-                            name: "a",
-                            label: "a",
-                            location: 15..16,
-                            is_validator_param: false,
-                        },
-                        location: 15..16,
-                        annotation: None,
-                        tipo: (),
-                    },
-                ],
-                body: BinOp {
-                    location: 29..34,
-                    name: AddInt,
-                    left: Var {
-                        location: 29..30,
-                        name: "a",
-                    },
-                    right: Int {
-                        location: 33..34,
-                        value: "1",
-                        base: Decimal {
-                            numeric_underscore: false,
-                        },
-                    },
-                },
-                doc: None,
-                location: 0..24,
-                name: "add_one",
-                public: true,
-                return_annotation: Some(
-                    Constructor {
-                        location: 21..24,
-                        module: None,
-                        name: "Int",
-                        arguments: [],
-                    },
-                ),
-                return_type: (),
-                end_position: 35,
-                can_error: true,
-            },
-        ),
-    ],
-    kind: Validator,
-}
diff --git a/crates/aiken-lang/src/tests/snapshots/when.snap b/crates/aiken-lang/src/tests/snapshots/when.snap
deleted file mode 100644
index 387ffad8..00000000
--- a/crates/aiken-lang/src/tests/snapshots/when.snap
+++ /dev/null
@@ -1,162 +0,0 @@
----
-source: crates/aiken-lang/src/tests/parser.rs
-description: "Code:\n\npub fn wow2(a: Int){\n  when a is {\n    2 -> 3\n    1 | 4 | 5 -> {\n      let amazing = 5\n      amazing\n    }\n    3 -> 9\n    _ -> 4\n  }\n}\n"
----
-Module {
-    name: "",
-    docs: [],
-    type_info: (),
-    definitions: [
-        Fn(
-            Function {
-                arguments: [
-                    Arg {
-                        arg_name: Named {
-                            name: "a",
-                            label: "a",
-                            location: 12..13,
-                            is_validator_param: false,
-                        },
-                        location: 12..18,
-                        annotation: Some(
-                            Constructor {
-                                location: 15..18,
-                                module: None,
-                                name: "Int",
-                                arguments: [],
-                            },
-                        ),
-                        tipo: (),
-                    },
-                ],
-                body: When {
-                    location: 23..132,
-                    subject: Var {
-                        location: 28..29,
-                        name: "a",
-                    },
-                    clauses: [
-                        UntypedClause {
-                            location: 39..45,
-                            patterns: [
-                                Int {
-                                    location: 39..40,
-                                    value: "2",
-                                    base: Decimal {
-                                        numeric_underscore: false,
-                                    },
-                                },
-                            ],
-                            guard: None,
-                            then: Int {
-                                location: 44..45,
-                                value: "3",
-                                base: Decimal {
-                                    numeric_underscore: false,
-                                },
-                            },
-                        },
-                        UntypedClause {
-                            location: 50..106,
-                            patterns: [
-                                Int {
-                                    location: 50..51,
-                                    value: "1",
-                                    base: Decimal {
-                                        numeric_underscore: false,
-                                    },
-                                },
-                                Int {
-                                    location: 54..55,
-                                    value: "4",
-                                    base: Decimal {
-                                        numeric_underscore: false,
-                                    },
-                                },
-                                Int {
-                                    location: 58..59,
-                                    value: "5",
-                                    base: Decimal {
-                                        numeric_underscore: false,
-                                    },
-                                },
-                            ],
-                            guard: None,
-                            then: Sequence {
-                                location: 71..100,
-                                expressions: [
-                                    Assignment {
-                                        location: 71..86,
-                                        value: Int {
-                                            location: 85..86,
-                                            value: "5",
-                                            base: Decimal {
-                                                numeric_underscore: false,
-                                            },
-                                        },
-                                        pattern: Var {
-                                            location: 75..82,
-                                            name: "amazing",
-                                        },
-                                        kind: Let,
-                                        annotation: None,
-                                    },
-                                    Var {
-                                        location: 93..100,
-                                        name: "amazing",
-                                    },
-                                ],
-                            },
-                        },
-                        UntypedClause {
-                            location: 111..117,
-                            patterns: [
-                                Int {
-                                    location: 111..112,
-                                    value: "3",
-                                    base: Decimal {
-                                        numeric_underscore: false,
-                                    },
-                                },
-                            ],
-                            guard: None,
-                            then: Int {
-                                location: 116..117,
-                                value: "9",
-                                base: Decimal {
-                                    numeric_underscore: false,
-                                },
-                            },
-                        },
-                        UntypedClause {
-                            location: 122..128,
-                            patterns: [
-                                Discard {
-                                    name: "_",
-                                    location: 122..123,
-                                },
-                            ],
-                            guard: None,
-                            then: Int {
-                                location: 127..128,
-                                value: "4",
-                                base: Decimal {
-                                    numeric_underscore: false,
-                                },
-                            },
-                        },
-                    ],
-                },
-                doc: None,
-                location: 0..19,
-                name: "wow2",
-                public: true,
-                return_annotation: None,
-                return_type: (),
-                end_position: 133,
-                can_error: true,
-            },
-        ),
-    ],
-    kind: Validator,
-}