diff --git a/Graphics/Rendering/OpenGL/Raw/Core21.hs b/Graphics/Rendering/OpenGL/Raw/Core21.hs
new file mode 100644
--- /dev/null
+++ b/Graphics/Rendering/OpenGL/Raw/Core21.hs
@@ -0,0 +1,593 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+
+{-|
+The following resources were used in the making of this module:
+
+  * <http://www.jwz.org/xscreensaver/glfns.txt>
+
+  * <http://www.cincomsmalltalk.com/userblogs/mls/blogView?showComments=true&printTitle=Forward_compatible_OpenGL_3.0_defines&entry=3398275422>
+-}
+module Graphics.Rendering.OpenGL.Raw.Core21
+       ( -- * Functions
+         glActiveTexture
+       , glAttachShader
+       , glBeginQuery
+       , glBindAttribLocation
+       , glBindBuffer
+       , glBindTexture
+       , glBlendColor
+       , glBlendEquation
+       , glBlendEquationSeparate
+       , glBlendFunc
+       , glBlendFuncSeparate
+       , glBufferData
+       , glBufferSubData
+       , glClear
+       , glClearColor
+       , glClearDepth
+       , glClearStencil
+       , glColorMask
+       , glCompileShader
+       , glCompressedTexImage1D
+       , glCompressedTexImage2D
+       , glCompressedTexImage3D
+       , glCompressedTexSubImage1D
+       , glCompressedTexSubImage2D
+       , glCompressedTexSubImage3D
+       , glCopyTexImage1D
+       , glCopyTexImage2D
+       , glCopyTexSubImage1D
+       , glCopyTexSubImage2D
+       , glCopyTexSubImage3D
+       , glCreateProgram
+       , glCreateShader
+       , glCullFace
+       , glDeleteBuffers
+       , glDeleteProgram
+       , glDeleteQueries
+       , glDeleteShader
+       , glDeleteTextures
+       , glDepthFunc
+       , glDepthMask
+       , glDepthRange
+       , glDetachShader
+       , glDisable
+       , glDisableVertexAttribArray
+       , glDrawArrays
+       , glDrawBuffer
+       , glDrawBuffers
+       , glDrawElements
+       , glDrawRangeElements
+       , glEnable
+       , glEnableVertexAttribArray
+       , glEndQuery
+       , glFinish
+       , glFlush
+       , glFrontFace
+       , glGenBuffers
+       , glGenQueries
+       , glGenTextures
+       , glGetActiveAttrib
+       , glGetActiveUniform
+       , glGetAttachedShaders
+       , glGetAttribLocation
+       , glGetBooleanv
+       , glGetBufferParameteriv
+       , glGetBufferPointerv
+       , glGetBufferSubData
+       , glGetCompressedTexImage
+       , glGetDoublev
+       , glGetError
+       , glGetFloatv
+       , glGetIntegerv
+       , glGetProgramInfoLog
+       , glGetProgramiv
+       , glGetQueryiv
+       , glGetShaderInfoLog
+       , glGetShaderSource
+       , glGetShaderiv
+       , glGetString
+       , glGetTexImage
+       , glGetTexParameterfv
+       , glGetTexParameteriv
+       , glGetUniformLocation
+       , glGetUniformfv
+       , glGetUniformiv
+       , glGetVertexAttribPointerv
+       , glGetVertexAttribfv
+       , glGetVertexAttribiv
+       , glHint
+       , glIsBuffer
+       , glIsEnabled
+       , glIsProgram
+       , glIsQuery
+       , glIsShader
+       , glIsTexture
+       , glLineWidth
+       , glLinkProgram
+       , glLogicOp
+       , glMapBuffer
+       , glMultiDrawArrays
+       , glMultiDrawElements
+       , glPixelStorei
+       , glPointParameterf
+       , glPointParameterfv
+       , glPointSize
+       , glPolygonMode
+       , glPolygonOffset
+       , glReadBuffer
+       , glReadPixels
+       , glSampleCoverage
+       , glScissor
+       , glShaderSource
+       , glStencilFunc
+       , glStencilFuncSeparate
+       , glStencilMask
+       , glStencilMaskSeparate
+       , glStencilOp
+       , glStencilOpSeparate
+       , glTexImage1D
+       , glTexImage2D
+       , glTexImage3D
+       , glTexParameterf
+       , glTexParameterfv
+       , glTexParameteri
+       , glTexParameteriv
+       , glTexSubImage1D
+       , glTexSubImage2D
+       , glTexSubImage3D
+       , glUniform1f
+       , glUniform1fv
+       , glUniform1i
+       , glUniform1iv
+       , glUniform2f
+       , glUniform2fv
+       , glUniform2i
+       , glUniform2iv
+       , glUniform3f
+       , glUniform3fv
+       , glUniform3i
+       , glUniform3iv
+       , glUniform4f
+       , glUniform4fv
+       , glUniform4i
+       , glUniform4iv
+       , glUnmapBuffer
+       , glUseProgram
+       , glValidateProgram
+       , glVertexAttrib1f
+       , glVertexAttrib1fv
+       , glVertexAttrib2f
+       , glVertexAttrib2fv
+       , glVertexAttrib3f
+       , glVertexAttrib3fv
+       , glVertexAttrib4f
+       , glVertexAttrib4fv
+       , glVertexAttribPointer
+       , glViewport
+         -- * Constants
+       , gl_FALSE
+       , gl_TRUE
+       , gl_ARRAY_BUFFER
+       , gl_BUFFER_ACCESS
+       , gl_BUFFER_MAPPED
+       , gl_BUFFER_MAP_POINTER
+       , gl_BUFFER_SIZE
+       , gl_BUFFER_USAGE
+       , gl_DYNAMIC_COPY
+       , gl_DYNAMIC_DRAW
+       , gl_DYNAMIC_READ
+       , gl_ELEMENT_ARRAY_BUFFER
+       , gl_PIXEL_PACK_BUFFER
+       , gl_PIXEL_UNPACK_BUFFER
+       , gl_READ_ONLY
+       , gl_READ_WRITE
+       , gl_STATIC_COPY
+       , gl_STATIC_DRAW
+       , gl_STATIC_READ
+       , gl_STREAM_COPY
+       , gl_STREAM_DRAW
+       , gl_STREAM_READ
+       , gl_WRITE_ONLY
+       , gl_BOOL
+       , gl_BOOL_VEC2
+       , gl_BOOL_VEC3
+       , gl_BOOL_VEC4
+       , gl_BYTE
+       , gl_DOUBLE
+       , gl_FLOAT
+       , gl_FLOAT_MAT2
+       , gl_FLOAT_MAT2x3
+       , gl_FLOAT_MAT2x4
+       , gl_FLOAT_MAT3
+       , gl_FLOAT_MAT3x2
+       , gl_FLOAT_MAT3x4
+       , gl_FLOAT_MAT4
+       , gl_FLOAT_MAT4x2
+       , gl_FLOAT_MAT4x3
+       , gl_FLOAT_VEC2
+       , gl_FLOAT_VEC3
+       , gl_FLOAT_VEC4
+       , gl_INT
+       , gl_INT_VEC2
+       , gl_INT_VEC3
+       , gl_INT_VEC4
+       , gl_SAMPLER_1D
+       , gl_SAMPLER_1D_SHADOW
+       , gl_SAMPLER_2D
+       , gl_SAMPLER_2D_SHADOW
+       , gl_SAMPLER_3D
+       , gl_SAMPLER_CUBE
+       , gl_SHORT
+       , gl_UNSIGNED_BYTE
+       , gl_UNSIGNED_INT
+       , gl_UNSIGNED_SHORT
+       , gl_LINES
+       , gl_LINE_LOOP
+       , gl_LINE_STRIP
+       , gl_MAX_ELEMENTS_INDICES
+       , gl_MAX_ELEMENTS_VERTICES
+       , gl_POINTS
+       , gl_TRIANGLES
+       , gl_TRIANGLE_FAN
+       , gl_TRIANGLE_STRIP
+       , gl_ALIASED_LINE_WIDTH_RANGE
+       , gl_BACK
+       , gl_CCW
+       , gl_CLIP_DISTANCE0
+       , gl_CLIP_DISTANCE1
+       , gl_CLIP_DISTANCE2
+       , gl_CLIP_DISTANCE3
+       , gl_CLIP_DISTANCE4
+       , gl_CLIP_DISTANCE5
+       , gl_CULL_FACE
+       , gl_CULL_FACE_MODE
+       , gl_CW
+       , gl_DONT_CARE
+       , gl_FASTEST
+       , gl_FILL
+       , gl_FRAGMENT_SHADER_DERIVATIVE_HINT
+       , gl_FRONT
+       , gl_FRONT_AND_BACK
+       , gl_FRONT_FACE
+       , gl_LINE
+       , gl_LINE_SMOOTH
+       , gl_LINE_SMOOTH_HINT
+       , gl_LINE_WIDTH
+       , gl_LOWER_LEFT
+       , gl_MAX_CLIP_DISTANCES
+       , gl_MAX_VIEWPORT_DIMS
+       , gl_MULTISAMPLE
+       , gl_NICEST
+       , gl_POINT
+       , gl_POINT_FADE_THRESHOLD_SIZE
+       , gl_POINT_SIZE
+       , gl_POINT_SIZE_GRANULARITY
+       , gl_POINT_SIZE_RANGE
+       , gl_POLYGON_OFFSET_FACTOR
+       , gl_POLYGON_OFFSET_FILL
+       , gl_POLYGON_OFFSET_LINE
+       , gl_POLYGON_OFFSET_POINT
+       , gl_POLYGON_OFFSET_UNITS
+       , gl_POLYGON_SMOOTH
+       , gl_POLYGON_SMOOTH_HINT
+       , gl_SAMPLES
+       , gl_SAMPLE_ALPHA_TO_COVERAGE
+       , gl_SAMPLE_ALPHA_TO_ONE
+       , gl_SAMPLE_BUFFERS
+       , gl_SAMPLE_COVERAGE
+       , gl_SAMPLE_COVERAGE_INVERT
+       , gl_SAMPLE_COVERAGE_VALUE
+       , gl_SCISSOR_BOX
+       , gl_SCISSOR_TEST
+       , gl_SMOOTH_LINE_WIDTH_GRANULARITY
+       , gl_SMOOTH_LINE_WIDTH_RANGE
+       , gl_SMOOTH_POINT_SIZE_GRANULARITY
+       , gl_SMOOTH_POINT_SIZE_RANGE
+       , gl_TEXTURE_COMPRESSION_HINT
+       , gl_UPPER_LEFT
+       , gl_VERTEX_PROGRAM_POINT_SIZE
+       , gl_VIEWPORT
+       , gl_INVALID_ENUM
+       , gl_INVALID_OPERATION
+       , gl_INVALID_VALUE
+       , gl_NO_ERROR
+       , gl_OUT_OF_MEMORY
+       , gl_ALPHA
+       , gl_BGR
+       , gl_BGRA
+       , gl_COMPRESSED_RGB
+       , gl_COMPRESSED_RGBA
+       , gl_COMPRESSED_SRGB
+       , gl_COMPRESSED_SRGB_ALPHA
+       , gl_COMPRESSED_TEXTURE_FORMATS
+       , gl_DEPTH_COMPONENT
+       , gl_DEPTH_COMPONENT16
+       , gl_DEPTH_COMPONENT24
+       , gl_DEPTH_COMPONENT32
+       , gl_NUM_COMPRESSED_TEXTURE_FORMATS
+       , gl_R3_G3_B2
+       , gl_RGB
+       , gl_RGB10
+       , gl_RGB10_A2
+       , gl_RGB12
+       , gl_RGB16
+       , gl_RGB4
+       , gl_RGB5
+       , gl_RGB5_A1
+       , gl_RGB8
+       , gl_RGBA
+       , gl_RGBA12
+       , gl_RGBA16
+       , gl_RGBA2
+       , gl_RGBA4
+       , gl_RGBA8
+       , gl_SRGB
+       , gl_SRGB8
+       , gl_SRGB8_ALPHA8
+       , gl_SRGB_ALPHA
+       , gl_UNSIGNED_BYTE_2_3_3_REV
+       , gl_UNSIGNED_BYTE_3_3_2
+       , gl_UNSIGNED_INT_10_10_10_2
+       , gl_UNSIGNED_INT_2_10_10_10_REV
+       , gl_UNSIGNED_INT_8_8_8_8
+       , gl_UNSIGNED_INT_8_8_8_8_REV
+       , gl_UNSIGNED_SHORT_1_5_5_5_REV
+       , gl_UNSIGNED_SHORT_4_4_4_4
+       , gl_UNSIGNED_SHORT_4_4_4_4_REV
+       , gl_UNSIGNED_SHORT_5_5_5_1
+       , gl_UNSIGNED_SHORT_5_6_5
+       , gl_UNSIGNED_SHORT_5_6_5_REV
+       , gl_BACK_LEFT
+       , gl_BACK_RIGHT
+       , gl_COLOR
+       , gl_COLOR_BUFFER_BIT
+       , gl_COLOR_CLEAR_VALUE
+       , gl_DEPTH
+       , gl_DEPTH_BUFFER_BIT
+       , gl_DEPTH_CLEAR_VALUE
+       , gl_DRAW_BUFFER
+       , gl_DRAW_BUFFER0
+       , gl_DRAW_BUFFER1
+       , gl_DRAW_BUFFER10
+       , gl_DRAW_BUFFER11
+       , gl_DRAW_BUFFER12
+       , gl_DRAW_BUFFER13
+       , gl_DRAW_BUFFER14
+       , gl_DRAW_BUFFER15
+       , gl_DRAW_BUFFER2
+       , gl_DRAW_BUFFER3
+       , gl_DRAW_BUFFER4
+       , gl_DRAW_BUFFER5
+       , gl_DRAW_BUFFER6
+       , gl_DRAW_BUFFER7
+       , gl_DRAW_BUFFER8
+       , gl_DRAW_BUFFER9
+       , gl_FRONT_LEFT
+       , gl_FRONT_RIGHT
+       , gl_LEFT
+       , gl_MAX_DRAW_BUFFERS
+       , gl_PACK_ALIGNMENT
+       , gl_PACK_IMAGE_HEIGHT
+       , gl_PACK_LSB_FIRST
+       , gl_PACK_ROW_LENGTH
+       , gl_PACK_SKIP_IMAGES
+       , gl_PACK_SKIP_PIXELS
+       , gl_PACK_SKIP_ROWS
+       , gl_PACK_SWAP_BYTES
+       , gl_READ_BUFFER
+       , gl_RIGHT
+       , gl_STENCIL
+       , gl_STENCIL_BUFFER_BIT
+       , gl_STENCIL_CLEAR_VALUE
+       , gl_STENCIL_INDEX
+       , gl_UNPACK_ALIGNMENT
+       , gl_UNPACK_IMAGE_HEIGHT
+       , gl_UNPACK_LSB_FIRST
+       , gl_UNPACK_ROW_LENGTH
+       , gl_UNPACK_SKIP_IMAGES
+       , gl_UNPACK_SKIP_PIXELS
+       , gl_UNPACK_SKIP_ROWS
+       , gl_UNPACK_SWAP_BYTES
+       , gl_DITHER
+       , gl_DOUBLEBUFFER
+       , gl_MAX_TEXTURE_LOD_BIAS
+       , gl_MAX_VARYING_FLOATS
+       , gl_STEREO
+       , gl_ALWAYS
+       , gl_AND
+       , gl_AND_INVERTED
+       , gl_AND_REVERSE
+       , gl_BLEND
+       , gl_BLEND_COLOR
+       , gl_BLEND_DST_ALPHA
+       , gl_BLEND_DST_RGB
+       , gl_BLEND_EQUATION_ALPHA
+       , gl_BLEND_EQUATION_RGB
+       , gl_BLEND_SRC_ALPHA
+       , gl_BLEND_SRC_RGB
+       , gl_CLEAR
+       , gl_COLOR_LOGIC_OP
+       , gl_COLOR_WRITEMASK
+       , gl_COPY
+       , gl_COPY_INVERTED
+       , gl_DECR
+       , gl_DECR_WRAP
+       , gl_DEPTH_FUNC
+       , gl_DEPTH_RANGE
+       , gl_DEPTH_TEST
+       , gl_DEPTH_WRITEMASK
+       , gl_DST_ALPHA
+       , gl_DST_COLOR
+       , gl_EQUAL
+       , gl_EQUIV
+       , gl_FUNC_ADD
+       , gl_FUNC_REVERSE_SUBTRACT
+       , gl_FUNC_SUBTRACT
+       , gl_GEQUAL
+       , gl_GREATER
+       , gl_INCR
+       , gl_INCR_WRAP
+       , gl_INVERT
+       , gl_KEEP
+       , gl_LEQUAL
+       , gl_LESS
+       , gl_MAX
+       , gl_MIN
+       , gl_NAND
+       , gl_NEVER
+       , gl_NOOP
+       , gl_NOR
+       , gl_NOTEQUAL
+       , gl_ONE
+       , gl_ONE_MINUS_CONSTANT_ALPHA
+       , gl_ONE_MINUS_CONSTANT_COLOR
+       , gl_ONE_MINUS_DST_ALPHA
+       , gl_ONE_MINUS_DST_COLOR
+       , gl_ONE_MINUS_SRC_ALPHA
+       , gl_ONE_MINUS_SRC_COLOR
+       , gl_OR
+       , gl_OR_INVERTED
+       , gl_OR_REVERSE
+       , gl_REPLACE
+       , gl_SET
+       , gl_SRC_ALPHA
+       , gl_SRC_ALPHA_SATURATE
+       , gl_SRC_COLOR
+       , gl_STENCIL_BACK_FAIL
+       , gl_STENCIL_BACK_FUNC
+       , gl_STENCIL_BACK_PASS_DEPTH_FAIL
+       , gl_STENCIL_BACK_PASS_DEPTH_PASS
+       , gl_STENCIL_BACK_REF
+       , gl_STENCIL_BACK_VALUE_MASK
+       , gl_STENCIL_BACK_WRITEMASK
+       , gl_STENCIL_FAIL
+       , gl_STENCIL_FUNC
+       , gl_STENCIL_PASS_DEPTH_FAIL
+       , gl_STENCIL_PASS_DEPTH_PASS
+       , gl_STENCIL_REF
+       , gl_STENCIL_TEST
+       , gl_STENCIL_VALUE_MASK
+       , gl_STENCIL_WRITEMASK
+       , gl_XOR
+       , gl_ZERO
+       , gl_CURRENT_QUERY
+       , gl_QUERY_COUNTER_BITS
+       , gl_QUERY_RESULT
+       , gl_QUERY_RESULT_AVAILABLE
+       , gl_SAMPLES_PASSED
+       , gl_ACTIVE_ATTRIBUTES
+       , gl_ACTIVE_ATTRIBUTE_MAX_LENGTH
+       , gl_ACTIVE_UNIFORMS
+       , gl_ACTIVE_UNIFORM_MAX_LENGTH
+       , gl_ATTACHED_SHADERS
+       , gl_COMPILE_STATUS
+       , gl_CURRENT_PROGRAM
+       , gl_DELETE_STATUS
+       , gl_FRAGMENT_SHADER
+       , gl_INFO_LOG_LENGTH
+       , gl_LINK_STATUS
+       , gl_SHADER_SOURCE_LENGTH
+       , gl_SHADER_TYPE
+       , gl_VALIDATE_STATUS
+       , gl_VERTEX_SHADER
+       , gl_MAX_FRAGMENT_UNIFORM_COMPONENTS
+       , gl_MAX_VERTEX_UNIFORM_COMPONENTS
+       , gl_RENDERER
+       , gl_SHADING_LANGUAGE_VERSION
+       , gl_VENDOR
+       , gl_VERSION
+       , gl_ACTIVE_TEXTURE
+       , gl_BLUE
+       , gl_CLAMP_TO_EDGE
+       , gl_COMPARE_REF_TO_TEXTURE
+       , gl_GREEN
+       , gl_LINEAR
+       , gl_LINEAR_MIPMAP_LINEAR
+       , gl_LINEAR_MIPMAP_NEAREST
+       , gl_MAX_3D_TEXTURE_SIZE
+       , gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS
+       , gl_MAX_CUBE_MAP_TEXTURE_SIZE
+       , gl_MAX_TEXTURE_IMAGE_UNITS
+       , gl_MAX_TEXTURE_SIZE
+       , gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS
+       , gl_MIRRORED_REPEAT
+       , gl_NEAREST
+       , gl_NEAREST_MIPMAP_LINEAR
+       , gl_NEAREST_MIPMAP_NEAREST
+       , gl_NONE
+       , gl_PROXY_TEXTURE_1D
+       , gl_PROXY_TEXTURE_2D
+       , gl_PROXY_TEXTURE_3D
+       , gl_PROXY_TEXTURE_CUBE_MAP
+       , gl_RED
+       , gl_REPEAT
+       , gl_TEXTURE
+       , gl_TEXTURE_1D
+       , gl_TEXTURE_2D
+       , gl_TEXTURE_3D
+       , gl_TEXTURE_ALPHA_SIZE
+       , gl_TEXTURE_BASE_LEVEL
+       , gl_TEXTURE_BINDING_1D
+       , gl_TEXTURE_BINDING_2D
+       , gl_TEXTURE_BINDING_3D
+       , gl_TEXTURE_BINDING_CUBE_MAP
+       , gl_TEXTURE_BLUE_SIZE
+       , gl_TEXTURE_COMPARE_FUNC
+       , gl_TEXTURE_COMPARE_MODE
+       , gl_TEXTURE_COMPRESSED
+       , gl_TEXTURE_COMPRESSED_IMAGE_SIZE
+       , gl_TEXTURE_CUBE_MAP
+       , gl_TEXTURE_CUBE_MAP_NEGATIVE_X
+       , gl_TEXTURE_CUBE_MAP_NEGATIVE_Y
+       , gl_TEXTURE_CUBE_MAP_NEGATIVE_Z
+       , gl_TEXTURE_CUBE_MAP_POSITIVE_X
+       , gl_TEXTURE_CUBE_MAP_POSITIVE_Y
+       , gl_TEXTURE_CUBE_MAP_POSITIVE_Z
+       , gl_TEXTURE_DEPTH
+       , gl_TEXTURE_DEPTH_SIZE
+       , gl_TEXTURE_GREEN_SIZE
+       , gl_TEXTURE_HEIGHT
+       , gl_TEXTURE_INTERNAL_FORMAT
+       , gl_TEXTURE_LOD_BIAS
+       , gl_TEXTURE_MAG_FILTER
+       , gl_TEXTURE_MAX_LEVEL
+       , gl_TEXTURE_MAX_LOD
+       , gl_TEXTURE_MIN_FILTER
+       , gl_TEXTURE_MIN_LOD
+       , gl_TEXTURE_RED_SIZE
+       , gl_TEXTURE_WIDTH
+       , gl_TEXTURE_WRAP_R
+       , gl_TEXTURE_WRAP_S
+       , gl_TEXTURE_WRAP_T
+       , gl_VERTEX_ATTRIB_ARRAY_POINTER
+       , gl_CURRENT_VERTEX_ATTRIB
+       , gl_MAX_VERTEX_ATTRIBS
+       , gl_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
+       , gl_VERTEX_ATTRIB_ARRAY_ENABLED
+       , gl_VERTEX_ATTRIB_ARRAY_NORMALIZED
+       , gl_VERTEX_ATTRIB_ARRAY_SIZE
+       , gl_VERTEX_ATTRIB_ARRAY_STRIDE
+       , gl_VERTEX_ATTRIB_ARRAY_TYPE
+         -- * Types
+       , GLbitfield
+       , GLboolean
+       , GLbyte
+       , GLchar
+       , GLclampd
+       , GLclampf
+       , GLdouble
+       , GLenum
+       , GLfloat
+       , GLhalf
+       , GLint
+       , GLintptr
+       , GLshort
+       , GLsizei
+       , GLsizeiptr
+       , GLubyte
+       , GLuint
+       , GLushort
+       ) where       
+
+import Graphics.Rendering.OpenGL.Raw.Core31
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,14 @@
+Copyright (c) 2010 Jake McArthur <Jake.McArthur@gmail.com>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/OpenGLRaw21.cabal b/OpenGLRaw21.cabal
new file mode 100644
--- /dev/null
+++ b/OpenGLRaw21.cabal
@@ -0,0 +1,33 @@
+Name:                OpenGLRaw21
+Version:             1.0
+Synopsis:            The intersection of OpenGL 2.1 and OpenGL 3.1 Core
+Description:         This package simply reexports a subset of the
+                     parts of OpenGLRaw which are compatible with
+                     OpenGL 2.1. The idea is that you can have greater
+                     certainty about compatibility with less capable
+                     graphics cards by only importing
+                     Graphics.Rendering.OpenGL.Raw.Core21 and the exact
+                     modules for whatever additional extensions you
+                     need.
+License:             OtherLicense
+License-file:        LICENSE
+Author:              Jake McArthur
+Maintainer:          Jake McArthur <Jake.McArthur@gmail.com>
+Category:            Graphics
+Build-type:          Simple
+Cabal-version:       >=1.6
+
+Library
+  Build-depends:     OpenGLRaw == 1.1.*
+  Extensions:        NoImplicitPrelude
+  Exposed-modules:   Graphics.Rendering.OpenGL.Raw.Core21
+  GHC-options:       -Wall -fwarn-tabs
+
+Source-repository head
+  type:     darcs
+  location: http://patch-tag.com/r/jmcarthur/OpenGLRaw21
+
+Source-repository this
+  type:     darcs
+  location: http://patch-tag.com/r/jmcarthur/OpenGLRaw21
+  tag:      v1.0
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
