anchor.diff:          else
               ""
   
  +
       let assembleUniformsS (uniforms : list<CUniform>) =
           state {
               let! config = AssemblerState.config
  -            if config.createUniformBuffers then
  -                let buffers =
  -                    uniforms 
  -                        |> List.groupBy (fun u -> u.cUniformBuffer)
  -
  -                let! set = AssemblerState.newSet
  -                let! definitions =
  -                    buffers |> List.mapS (fun (name, fields) ->
  -                        state {
  -                            let fields = 
  -                                fields |> List.map (fun u -> 
  -                                    sprintf "%s %s;" (assembleType u.cUniformType) u.cUniformName
  -                                )
  -                            match name with
  -                                | None ->
  -                                    let! definitions = 
  -                                        fields |> List.mapS (fun f ->
  -                                            state {
  -                                                let! binding = AssemblerState.newBinding
  -                                                let prefix = uniformLayout set binding
  -                                                return sprintf "%suniform %s" prefix f
  -                                            }
  -                                        )
  -
  -                                    return definitions |> String.concat "\r\n"
  -                                | Some bufferName ->
  -                                    let! binding = AssemblerState.newBinding
  +            let buffers =
  +                uniforms 
  +                    |> List.groupBy (fun u -> u.cUniformBuffer)
  +
  +            let! set = AssemblerState.newSet
  +            let! definitions =
  +                buffers |> List.mapS (fun (name, fields) ->
  +                    state {
  +                        let fields = 
  +                            fields |> List.map (fun u -> 
  +                                let decl = assembleDeclaration u.cUniformType u.cUniformName
  +                                sprintf "%s;" decl    
  +                            )
  +                        match name with
  +                            | Some bufferName when config.createUniformBuffers ->
  +                                let! binding = AssemblerState.newBinding
                                       
  -                                    let fields = fields |> String.concat "\r\n"
  -                                    let prefix = uniformLayout set binding
  +                                let fields = fields |> String.concat "\r\n"
  +                                let prefix = uniformLayout set binding
                               
  -                                    return sprintf "%suniform %s\r\n{\r\n%s\r\n};\r\n" prefix bufferName (String.indent fields)
  -                        }
  -                    )
  +                                return sprintf "%suniform %s\r\n{\r\n%s\r\n};\r\n" prefix bufferName (String.indent fields)
  +
  +                            | _ ->
  +                                let! definitions = 
  +                                    fields |> List.mapS (fun f ->
  +                                        state {
  +                                            let! binding = AssemblerState.newBinding
  +                                            let prefix = uniformLayout set binding
  +                                            return sprintf "%suniform %s" prefix f
  +                                        }
  +                                    )
  +
  +                                return definitions |> String.concat "\r\n"
  +                    }
  +                )
                   
  -                return String.concat "\r\n\r\n" definitions
  -            else   
  -                return 
  -                    uniforms
  -                        |> List.map (fun u -> sprintf "uniform %s %s;" (assembleType u.cUniformType) u.cUniformName)
  -                        |> String.concat "\r\n"
  +            return String.concat "\r\n\r\n" definitions
   
                   
           }
  
positive.code: 
                  | CDeclare(v, r) ->
                      let! r = r |> Option.mapS assembleRExprS
                      match v.ctype with
                          | CArray(t, l) ->
                              let t = assembleType t
                              match r with
                                  | Some r -> return sprintf "%s %s[%d] = %s;" t v.name l r
                                  | None -> return sprintf "%s %s[%d];" t v.name l
  
                          | t ->
                              let t = assembleType t
                              match r with
                                  | Some r -> return sprintf "%s %s = %s;" t v.name r
                                  | None -> return sprintf "%s %s;" t v.name
  
                  | CWriteOutput(name, index, value) ->
                      let! name = parameterNameS ParameterKind.Output name
  
negative.code:         match d with
              | CStructDef(name, fields) ->
                  let fields = fields |> List.map (fun (t, n) -> sprintf "%s %s;" (assembleType t) n) |> String.concat "\r\n"
                  sprintf "struct %s\r\n{\r\n%s\r\n};" name (String.indent fields)
  
      let assemble (backend : Backend) (m : CModule) =
          let c = backend.Config
  