diff --git a/tests/src/mocks/generation/CleanUp_openGL_mock.py b/tests/src/mocks/generation/CleanUp_openGL_mock.py
new file mode 100644
index 0000000000000000000000000000000000000000..4fbd83e282c830b61488c67530bf0f6291ebe7ea
--- /dev/null
+++ b/tests/src/mocks/generation/CleanUp_openGL_mock.py
@@ -0,0 +1,114 @@
+#------------------------------------------------------------------------------
+# Project Phoenix
+#
+# Copyright (c) 2017-2018 RWTH Aachen University, Germany,
+# Virtual Reality & Immersive Visualization Group.
+#------------------------------------------------------------------------------
+#                                 License
+#
+# Licensed under the 3-Clause BSD License (the "License");
+# you may not use this file except in compliance with the License.
+# See the file LICENSE for the full text.
+# You may obtain a copy of the License at
+#
+#     https://opensource.org/licenses/BSD-3-Clause
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#------------------------------------------------------------------------------
+import textwrap
+import os
+from collections import defaultdict
+
+params_to_be_sorted = ["functions_to_mock", "allow_calls_provided", 
+					   "gl_types"]
+
+def sortListAlphabetically(content):
+	prefix = content[0:content.find("=")]
+	print("... sorting " + prefix)
+	
+	sub_content = content[content.find("[")+1:content.find("']")]
+	params = sub_content.split("',")
+	params = sorted(params, key=lambda s: s.lower())
+	
+	if (params_to_be_sorted[1] in prefix):
+		sub_content = sortGlewBeforeGl(params)
+	elif (params_to_be_sorted[2] in prefix):
+		sub_content = sortGLBeforeRest(params)
+	else:
+		sub_content = ', '.join(str(val)+"'" for val in params)
+	
+	return (prefix+ " = [" + sub_content+"]")
+
+def sortGlewBeforeGl(params):
+	d = defaultdict(list)
+	for val in params:
+		d["glew" in val].append(val)
+	sortedParams = ','.join(str(p)+"'" for p in d[True])
+	sortedParams += ','
+	sortedParams += ','.join(str(p)+"'" for p in d[False])
+	return sortedParams
+
+def sortGLBeforeRest(params):
+	d = defaultdict(list)
+	for val in params:
+		d["GL" in val].append(val)
+	sortedParams = ', '.join(str(p)+"'" for p in d[True])
+	sortedParams += ','
+	sortedParams += ','.join(str(p)+"'" for p in d[False])
+	return sortedParams
+	
+	
+def printToFile(file, content):
+	nr_of_blanks = len(content[0:content.find("[")+1])
+	if (params_to_be_sorted[1] in content):
+		printWithLineBreakAtComma(file, content, nr_of_blanks)
+	else:
+		printWith80CharacterLimit(file, content, nr_of_blanks)
+
+def printWith80CharacterLimit(file, content, nr_of_blanks):
+	input = ('\n'+' '*nr_of_blanks).join(textwrap.wrap(content, 
+		80-nr_of_blanks))
+	input += "\n"
+	file.write(input)
+
+def printWithLineBreakAtComma(file, content, nr_of_blanks):
+	content = content.replace ("',", "',\n")
+	params = content.split("\n")
+	for val in params:
+		file.write(val+"\n" if val == params[0] else ' '*(nr_of_blanks)+val+"\n")
+
+		
+def main():
+	file_in = open("Create_openGL_mock.py","r")
+	file_out = open("tmp.py","w")
+
+	collecting_tbs_lines = False
+	lines_tbs = ''
+
+	for line in file_in:
+		if any(val+"=[" in line.replace(' ', '') for val in params_to_be_sorted):
+			collecting_tbs_lines = True
+			
+		if collecting_tbs_lines:
+			lines_tbs += line.replace('\n', '').replace('\t', '').replace(' ', '')
+			if "]" in line:
+				collecting_tbs_lines = False
+				printToFile(file_out, sortListAlphabetically(lines_tbs))
+				lines_tbs = ''
+		else:
+			file_out.write(line)
+
+	file_in.close()
+	os.remove("Create_openGL_mock.py")
+	file_out.close()
+	os.rename("tmp.py", "Create_openGL_mock.py")
+	print "Done."
+
+
+print "Cleanup openGL mock ..."
+main()
+	
diff --git a/tests/src/mocks/generation/Create_openGL_mock.py b/tests/src/mocks/generation/Create_openGL_mock.py
index 02925abc19d92dbcfdeab722e360395279a86910..07c1944f1a3092d356c28ca23dee79d73bf1e640 100644
--- a/tests/src/mocks/generation/Create_openGL_mock.py
+++ b/tests/src/mocks/generation/Create_openGL_mock.py
@@ -22,79 +22,185 @@
 import sys, getopt
 
 #functions you want to mock should be put in this list
-functions_to_mock =['glClear', 'glEnable', 'glIsEnabled', 'glDisable', 'glClearColor', 'glCreateProgram', 'glCreateShader', 'glNamedBufferData', 'glShaderSource',
-                    'glCompileShader', 'glAttachShader', 'glBindVertexArray', 'glCreateBuffers', 'glCreateVertexArrays', 'glEnableVertexArrayAttrib',
-                    'glGetUniformLocation', 'glIsBuffer', 'glIsProgram', 'glIsVertexArray', 'glLinkProgram', 'glUniformMatrix4fv', 'glUniform3fv',
-                    'glUniform1f', 'glUseProgram', 'glVertexArrayElementBuffer', 'glVertexArrayVertexBuffer', 'glDrawElements', 'glVertexArrayAttribFormat',
-                    'glGetProgramiv', 'glGetProgramInfoLog', 'glProgramUniform3fv', 'glProgramUniformMatrix4fv', 'glGetPointerv', 
-                    'glClearDepth', 'glClearStencil', 'glColorMask', 'glDepthMask', 'glReadPixels', '__glewStencilMaskSeparate', '__glewClampColor',
-                    '__glewColorMaski', '__glewClearDepthf', '__glewBlitNamedFramebuffer', '__glewCheckNamedFramebufferStatus', '__glewClearNamedFramebufferfi',
-                    '__glewClearNamedFramebufferfv', '__glewClearNamedFramebufferiv', '__glewClearNamedFramebufferuiv', '__glewCreateFramebuffers',
-                    '__glewGetNamedFramebufferAttachmentParameteriv', '__glewGetNamedFramebufferParameteriv', '__glewInvalidateNamedFramebufferData',
-                    '__glewInvalidateNamedFramebufferSubData', '__glewNamedFramebufferDrawBuffer', '__glewNamedFramebufferDrawBuffers', '__glewNamedFramebufferParameteri',
-                    '__glewNamedFramebufferReadBuffer', '__glewNamedFramebufferRenderbuffer', '__glewDeleteFramebuffers', '__glewIsFramebuffer', '__glewCopyImageSubData',
-                    '__glewCreateRenderbuffers', '__glewGetNamedRenderbufferParameteriv', '__glewNamedRenderbufferStorage', '__glewNamedRenderbufferStorageMultisample',
-                    '__glewBindRenderbuffer', '__glewDeleteRenderbuffers', '__glewIsRenderbuffer', '__glewGetInternalformativ', '__glewGetInternalformati64v',
-                    'glFinish', 'glFlush', 'glGetError', 'glGetIntegerv', '__glewGetGraphicsResetStatus', '__glewBindAttribLocation', '__glewDeleteProgram', '__glewDetachShader',
-                    '__glewGetActiveAttrib', '__glewGetActiveUniform', '__glewGetAttachedShaders', '__glewGetAttribLocation', '__glewGetUniformfv', '__glewGetUniformiv',
-                    '__glewValidateProgram', '__glewBindFragDataLocation', '__glewGetFragDataLocation', '__glewGetTransformFeedbackVarying', '__glewGetUniformuiv',
-                    '__glewTransformFeedbackVaryings', '__glewProgramUniformHandleui64ARB', '__glewProgramUniformHandleui64vARB', '__glewBindFragDataLocationIndexed',
-                    '__glewGetFragDataIndex', '__glewProgramParameteri', '__glewGetUniformdv', '__glewGetProgramInterfaceiv', '__glewGetProgramResourceIndex',
-                    '__glewGetProgramResourceLocation', '__glewGetProgramResourceLocationIndex', '__glewGetProgramResourceName', '__glewGetProgramResourceiv',
-                    '__glewProgramUniform1d', '__glewProgramUniform1dv', '__glewProgramUniform1f', '__glewProgramUniform1fv', '__glewProgramUniform1i', '__glewProgramUniform1iv',
-                    '__glewProgramUniform1ui', '__glewProgramUniform1uiv', '__glewProgramUniform2d', '__glewProgramUniform2dv', '__glewProgramUniform2f', '__glewProgramUniform2fv',
-                    '__glewProgramUniform2i', '__glewProgramUniform2iv', '__glewProgramUniform2ui', '__glewProgramUniform2uiv', '__glewProgramUniform3d', '__glewProgramUniform3dv',
-                    '__glewProgramUniform3f', '__glewProgramUniform3i', '__glewProgramUniform3iv', '__glewProgramUniform3ui', '__glewProgramUniform3uiv', '__glewProgramUniform4d',
-                    '__glewProgramUniform4dv', '__glewProgramUniform4f', '__glewProgramUniform4fv', '__glewProgramUniform4i', '__glewProgramUniform4iv', '__glewProgramUniform4ui',
-                    '__glewProgramUniform4uiv', '__glewProgramUniformMatrix2dv', '__glewProgramUniformMatrix2fv', '__glewProgramUniformMatrix2x3dv', '__glewProgramUniformMatrix2x3fv',
-                    '__glewProgramUniformMatrix2x4dv', '__glewProgramUniformMatrix2x4fv', '__glewProgramUniformMatrix3dv', '__glewProgramUniformMatrix3fv', '__glewProgramUniformMatrix3x2dv',
-                    '__glewProgramUniformMatrix3x2fv', '__glewProgramUniformMatrix3x4dv', '__glewProgramUniformMatrix3x4fv', '__glewProgramUniformMatrix4dv', '__glewProgramUniformMatrix4x2dv',
-                    '__glewProgramUniformMatrix4x2fv', '__glewProgramUniformMatrix4x3dv', '__glewProgramUniformMatrix4x3fv', '__glewGetActiveAtomicCounterBufferiv', '__glewShaderStorageBlockBinding',
-                    '__glewGetActiveSubroutineName', '__glewGetActiveSubroutineUniformName', '__glewGetActiveSubroutineUniformiv', '__glewGetProgramStageiv', '__glewGetSubroutineIndex',
-                    '__glewGetSubroutineUniformLocation', '__glewGetUniformSubroutineuiv', '__glewUniformSubroutinesuiv', '__glewGetActiveUniformBlockName', '__glewGetActiveUniformBlockiv',
-                    '__glewGetActiveUniformName', '__glewGetActiveUniformsiv', '__glewGetUniformBlockIndex', '__glewGetUniformIndices', '__glewUniformBlockBinding', '__glewDeleteShader',
-                    '__glewGetShaderInfoLog', '__glewGetShaderSource', '__glewGetShaderiv', '__glewIsShader', '__glewSpecializeShader', '__glewReleaseShaderCompiler', '__glewShaderBinary',
-                    '__glewIsImageHandleResidentARB', '__glewMakeImageHandleNonResidentARB', '__glewMakeImageHandleResidentARB', '__glewIsTextureHandleResidentARB', '__glewMakeTextureHandleNonResidentARB',
-                    '__glewMakeTextureHandleResidentARB', '__glewDeleteBuffers', '__glewClearNamedBufferData', '__glewClearNamedBufferSubData','__glewCopyNamedBufferSubData',
-                    '__glewFlushMappedNamedBufferRange', '__glewGetNamedBufferParameteri64v', '__glewGetNamedBufferParameteriv', '__glewGetNamedBufferPointerv', 'glViewport',
-                    '__glewGetNamedBufferSubData', '__glewMapNamedBuffer', '__glewMapNamedBufferRange', '__glewNamedBufferStorage', '__glewNamedBufferSubData',
-                    '__glewUnmapNamedBuffer', '__glewInvalidateBufferData', '__glewInvalidateBufferSubData', '__glewDisableVertexArrayAttrib', '__glewGetVertexArrayIndexed64iv',
-                    '__glewGetVertexArrayIndexediv', '__glewGetVertexArrayiv', '__glewVertexArrayAttribBinding', '__glewVertexArrayAttribIFormat', '__glewVertexArrayAttribLFormat',
-                    '__glewVertexArrayBindingDivisor', '__glewDeleteVertexArrays', 'glBindTexture', 'glDeleteTextures', '__glewCreateTextures', '__glewNamedFramebufferTexture',
-                    '__glewTextureStorage2D', '__glewBindFramebuffer', 'glIsTexture', '__glewGetTextureHandleARB', '__glewGenerateTextureMipmap', '__glewTextureParameteri', '__glewTextureSubImage2D',
-                    '__glewBindBufferBase', '__glewBindBuffer', '__glewBindBufferRange', '__glewCreateShaderProgramv', 'glDepthRange', '__glewDepthRangef', '__glewDepthRangeIndexed', '__glewViewportIndexedf', 'glPolygonMode', 'glDebugMessageCallback',
-					'__glewDebugMessageControl', '__glewDebugMessageInsert', '__glewGetDebugMessageLog', '__glewGetObjectPtrLabel', '__glewPopDebugGroup', '__glewPushDebugGroup', '__glewClientWaitSync', 
-					'__glewDeleteSync', '__glewFenceSync', '__glewGetSynciv', '__glewIsSync', '__glewWaitSync', '__glewObjectPtrLabel', '__glewTextureStorage3D', '__glewTextureSubImage3D', 'glDrawArrays']
+functions_to_mock = ['__glewBindAttribLocation',
+                     '__glewBindBuffer', '__glewBindBufferBase',
+                     '__glewBindBufferRange', '__glewBindFragDataLocation',
+                     '__glewBindFragDataLocationIndexed',
+                     '__glewBindFramebuffer', '__glewBindRenderbuffer',
+                     '__glewBlitNamedFramebuffer',
+                     '__glewCheckNamedFramebufferStatus', '__glewClampColor',
+                     '__glewClearDepthf', '__glewClearNamedBufferData',
+                     '__glewClearNamedBufferSubData',
+                     '__glewClearNamedFramebufferfi',
+                     '__glewClearNamedFramebufferfv',
+                     '__glewClearNamedFramebufferiv',
+                     '__glewClearNamedFramebufferuiv', '__glewClientWaitSync',
+                     '__glewColorMaski', '__glewCopyImageSubData',
+                     '__glewCopyNamedBufferSubData', '__glewCreateFramebuffers',
+                     '__glewCreateRenderbuffers', '__glewCreateShaderProgramv',
+                     '__glewCreateTextures', '__glewDebugMessageControl',
+                     '__glewDebugMessageInsert', '__glewDeleteBuffers',
+                     '__glewDeleteFramebuffers', '__glewDeleteProgram',
+                     '__glewDeleteRenderbuffers', '__glewDeleteShader',
+                     '__glewDeleteSync', '__glewDeleteVertexArrays',
+                     '__glewDepthRangef', '__glewDepthRangeIndexed',
+                     '__glewDetachShader', '__glewDisableVertexArrayAttrib',
+                     '__glewFenceSync', '__glewFlushMappedNamedBufferRange',
+                     '__glewGenerateTextureMipmap',
+                     '__glewGetActiveAtomicCounterBufferiv',
+                     '__glewGetActiveAttrib', '__glewGetActiveSubroutineName',
+                     '__glewGetActiveSubroutineUniformiv',
+                     '__glewGetActiveSubroutineUniformName',
+                     '__glewGetActiveUniform', '__glewGetActiveUniformBlockiv',
+                     '__glewGetActiveUniformBlockName',
+                     '__glewGetActiveUniformName', '__glewGetActiveUniformsiv',
+                     '__glewGetAttachedShaders', '__glewGetAttribLocation',
+                     '__glewGetDebugMessageLog', '__glewGetFragDataIndex',
+                     '__glewGetFragDataLocation',
+                     '__glewGetGraphicsResetStatus',
+                     '__glewGetInternalformati64v', '__glewGetInternalformativ',
+                     '__glewGetNamedBufferParameteri64v',
+                     '__glewGetNamedBufferParameteriv',
+                     '__glewGetNamedBufferPointerv',
+                     '__glewGetNamedBufferSubData',
+                     '__glewGetNamedFramebufferAttachmentParameteriv',
+                     '__glewGetNamedFramebufferParameteriv',
+                     '__glewGetNamedRenderbufferParameteriv',
+                     '__glewGetObjectPtrLabel', '__glewGetProgramInterfaceiv',
+                     '__glewGetProgramResourceIndex',
+                     '__glewGetProgramResourceiv',
+                     '__glewGetProgramResourceLocation',
+                     '__glewGetProgramResourceLocationIndex',
+                     '__glewGetProgramResourceName', '__glewGetProgramStageiv',
+                     '__glewGetShaderInfoLog', '__glewGetShaderiv',
+                     '__glewGetShaderSource', '__glewGetSubroutineIndex',
+                     '__glewGetSubroutineUniformLocation', '__glewGetSynciv',
+                     '__glewGetTextureHandleARB',
+                     '__glewGetTransformFeedbackVarying',
+                     '__glewGetUniformBlockIndex', '__glewGetUniformdv',
+                     '__glewGetUniformfv', '__glewGetUniformIndices',
+                     '__glewGetUniformiv', '__glewGetUniformSubroutineuiv',
+                     '__glewGetUniformuiv', '__glewGetVertexArrayIndexed64iv',
+                     '__glewGetVertexArrayIndexediv', '__glewGetVertexArrayiv',
+                     '__glewInvalidateBufferData',
+                     '__glewInvalidateBufferSubData',
+                     '__glewInvalidateNamedFramebufferData',
+                     '__glewInvalidateNamedFramebufferSubData',
+                     '__glewIsFramebuffer', '__glewIsImageHandleResidentARB',
+                     '__glewIsRenderbuffer', '__glewIsShader', '__glewIsSync',
+                     '__glewIsTextureHandleResidentARB',
+                     '__glewMakeImageHandleNonResidentARB',
+                     '__glewMakeImageHandleResidentARB',
+                     '__glewMakeTextureHandleNonResidentARB',
+                     '__glewMakeTextureHandleResidentARB',
+                     '__glewMapNamedBuffer', '__glewMapNamedBufferRange',
+                     '__glewNamedBufferStorage', '__glewNamedBufferSubData',
+                     '__glewNamedFramebufferDrawBuffer',
+                     '__glewNamedFramebufferDrawBuffers',
+                     '__glewNamedFramebufferParameteri',
+                     '__glewNamedFramebufferReadBuffer',
+                     '__glewNamedFramebufferRenderbuffer',
+                     '__glewNamedFramebufferTexture',
+                     '__glewNamedRenderbufferStorage',
+                     '__glewNamedRenderbufferStorageMultisample',
+                     '__glewObjectPtrLabel', '__glewPopDebugGroup',
+                     '__glewProgramParameteri', '__glewProgramUniform1d',
+                     '__glewProgramUniform1dv', '__glewProgramUniform1f',
+                     '__glewProgramUniform1fv', '__glewProgramUniform1i',
+                     '__glewProgramUniform1iv', '__glewProgramUniform1ui',
+                     '__glewProgramUniform1uiv', '__glewProgramUniform2d',
+                     '__glewProgramUniform2dv', '__glewProgramUniform2f',
+                     '__glewProgramUniform2fv', '__glewProgramUniform2i',
+                     '__glewProgramUniform2iv', '__glewProgramUniform2ui',
+                     '__glewProgramUniform2uiv', '__glewProgramUniform3d',
+                     '__glewProgramUniform3dv', '__glewProgramUniform3f',
+                     '__glewProgramUniform3i', '__glewProgramUniform3iv',
+                     '__glewProgramUniform3ui', '__glewProgramUniform3uiv',
+                     '__glewProgramUniform4d', '__glewProgramUniform4dv',
+                     '__glewProgramUniform4f', '__glewProgramUniform4fv',
+                     '__glewProgramUniform4i', '__glewProgramUniform4iv',
+                     '__glewProgramUniform4ui', '__glewProgramUniform4uiv',
+                     '__glewProgramUniformHandleui64ARB',
+                     '__glewProgramUniformHandleui64vARB',
+                     '__glewProgramUniformMatrix2dv',
+                     '__glewProgramUniformMatrix2fv',
+                     '__glewProgramUniformMatrix2x3dv',
+                     '__glewProgramUniformMatrix2x3fv',
+                     '__glewProgramUniformMatrix2x4dv',
+                     '__glewProgramUniformMatrix2x4fv',
+                     '__glewProgramUniformMatrix3dv',
+                     '__glewProgramUniformMatrix3fv',
+                     '__glewProgramUniformMatrix3x2dv',
+                     '__glewProgramUniformMatrix3x2fv',
+                     '__glewProgramUniformMatrix3x4dv',
+                     '__glewProgramUniformMatrix3x4fv',
+                     '__glewProgramUniformMatrix4dv',
+                     '__glewProgramUniformMatrix4x2dv',
+                     '__glewProgramUniformMatrix4x2fv',
+                     '__glewProgramUniformMatrix4x3dv',
+                     '__glewProgramUniformMatrix4x3fv', '__glewPushDebugGroup',
+                     '__glewReleaseShaderCompiler', '__glewShaderBinary',
+                     '__glewShaderStorageBlockBinding',
+                     '__glewSpecializeShader', '__glewStencilMaskSeparate',
+                     '__glewTextureParameteri', '__glewTextureStorage2D',
+                     '__glewTextureStorage3D', '__glewTextureSubImage2D',
+                     '__glewTextureSubImage3D',
+                     '__glewTransformFeedbackVaryings',
+                     '__glewUniformBlockBinding', '__glewUniformSubroutinesuiv',
+                     '__glewUnmapNamedBuffer', '__glewValidateProgram',
+                     '__glewVertexArrayAttribBinding',
+                     '__glewVertexArrayAttribIFormat',
+                     '__glewVertexArrayAttribLFormat',
+                     '__glewVertexArrayBindingDivisor',
+                     '__glewViewportIndexedf', '__glewWaitSync',
+                     'glAttachShader', 'glBindTexture', 'glBindVertexArray',
+                     'glClear', 'glClearColor', 'glClearDepth',
+                     'glClearStencil', 'glColorMask', 'glCompileShader',
+                     'glCreateBuffers', 'glCreateProgram', 'glCreateShader',
+                     'glCreateVertexArrays', 'glDebugMessageCallback',
+                     'glDeleteTextures', 'glDepthMask', 'glDepthRange',
+                     'glDisable', 'glDrawArrays', 'glDrawElements', 'glEnable',
+                     'glEnableVertexArrayAttrib', 'glFinish', 'glFlush',
+                     'glGetError', 'glGetIntegerv', 'glGetPointerv',
+                     'glGetProgramInfoLog', 'glGetProgramiv',
+                     'glGetUniformLocation', 'glIsBuffer', 'glIsEnabled',
+                     'glIsProgram', 'glIsTexture', 'glIsVertexArray',
+                     'glLinkProgram', 'glNamedBufferData', 'glPolygonMode',
+                     'glProgramUniform3fv', 'glProgramUniformMatrix4fv',
+                     'glReadPixels', 'glShaderSource', 'glUniform1f',
+                     'glUniform3fv', 'glUniformMatrix4fv', 'glUseProgram',
+                     'glVertexArrayAttribFormat', 'glVertexArrayElementBuffer',
+                     'glVertexArrayVertexBuffer', 'glViewport']
 
 #allow calls you want to provide and not be auto generated
-allow_calls_provided = ['ALLOW_CALL(open_gl_mock, glewInit()).RETURN(GLEW_OK);',
-                        'ALLOW_CALL(open_gl_mock, glCompileShader(gt(0u)));',
-                        'ALLOW_CALL(open_gl_mock, glCreateProgram()).RETURN(1u);',
-                        'ALLOW_CALL(open_gl_mock, glCreateShader(_)).RETURN(1u);'
-                        'ALLOW_CALL(open_gl_mock, glAttachShader(gt(0u), gt(0u)));',
-                        'ALLOW_CALL(open_gl_mock, glCreateBuffers(1, _)).SIDE_EFFECT(*_2 = 1);',
-                        'ALLOW_CALL(open_gl_mock, glCreateVertexArrays(0, _));',
-                        'ALLOW_CALL(open_gl_mock, glCreateVertexArrays(1, _)).SIDE_EFFECT(*_2 = 1);',
-                        'ALLOW_CALL(open_gl_mock, glIsBuffer(0u)).RETURN(false);',
-                        'ALLOW_CALL(open_gl_mock, glIsBuffer(gt(0u))).RETURN(true);',
-                        'ALLOW_CALL(open_gl_mock, glIsProgram(0u)).RETURN(false);',
-                        'ALLOW_CALL(open_gl_mock, glIsProgram(gt(0u))).RETURN(true);',
-                        'ALLOW_CALL(open_gl_mock, glIsVertexArray(0u)).RETURN(false);',
-                        'ALLOW_CALL(open_gl_mock, glIsVertexArray(gt(0u))).RETURN(true);',
-                        'ALLOW_CALL(open_gl_mock, glLinkProgram(gt(0u)));',
-                        'ALLOW_CALL(open_gl_mock, glGetProgramInfoLog(_, _, _, _)).SIDE_EFFECT(*_3 = 0);',
-                        'ALLOW_CALL(open_gl_mock, glGetProgramiv(_, _, _)).SIDE_EFFECT(*_3 = GL_TRUE);',
-						'ALLOW_CALL(open_gl_mock, glIsFramebuffer(gt(0u))).RETURN(true);',
-						'ALLOW_CALL(open_gl_mock, glCheckNamedFramebufferStatus(gt(0u),_)).RETURN(GL_FRAMEBUFFER_COMPLETE);']
-
-#order does matter here, so prefixes of other types should come later
-gl_types = ['GLuint64EXT', 'GLint64EXT', 'GLintptr', 'GLsizeiptr', 'GLint64', 'GLuint64', 'GLboolean', 'GLbyte', 'GLubyte', 
-            'GLint', 'GLuint', 'GLsizei', 'GLfixed', 'GLenum', 'GLsync', 'GLbitfield', 'GLhalf', 'GLfloat', 'GLclampf',
-            'GLdouble', 'GLclampd', 'GLvoid', 'void', 'GLchar', 'GLshort', 'GLushort', 'GLclampx',
-            'GLhandleARB', 'GLcharARB', 'GLintptrARB', 'GLsizeiptrARB',
-            'GLvdpauSurfaceNV', 'GLeglClientBufferEXT',
-            'GLDEBUGPROCAMD', 'GLDEBUGPROCARB', 'GLDEBUGPROC', 'GLLOGPROCREGAL',
-			'cl_context', 'cl_event']
+allow_calls_provided = ['ALLOW_CALL(open_gl_mock,glewInit()).RETURN(GLEW_OK);',
+                        'ALLOW_CALL(open_gl_mock,glCheckNamedFramebufferStatus(gt(0u),_)).RETURN(GL_FRAMEBUFFER_COMPLETE);',
+                        'ALLOW_CALL(open_gl_mock,glCompileShader(gt(0u)));',
+                        'ALLOW_CALL(open_gl_mock,glCreateBuffers(1,_)).SIDE_EFFECT(*_2=1);',
+                        'ALLOW_CALL(open_gl_mock,glCreateProgram()).RETURN(1u);',
+                        'ALLOW_CALL(open_gl_mock,glCreateShader(_)).RETURN(1u);''ALLOW_CALL(open_gl_mock,glAttachShader(gt(0u),gt(0u)));',
+                        'ALLOW_CALL(open_gl_mock,glCreateVertexArrays(0,_));',
+                        'ALLOW_CALL(open_gl_mock,glCreateVertexArrays(1,_)).SIDE_EFFECT(*_2=1);',
+                        'ALLOW_CALL(open_gl_mock,glGetProgramInfoLog(_,_,_,_)).SIDE_EFFECT(*_3=0);',
+                        'ALLOW_CALL(open_gl_mock,glGetProgramiv(_,_,_)).SIDE_EFFECT(*_3=GL_TRUE);',
+                        'ALLOW_CALL(open_gl_mock,glIsBuffer(0u)).RETURN(false);',
+                        'ALLOW_CALL(open_gl_mock,glIsBuffer(gt(0u))).RETURN(true);',
+                        'ALLOW_CALL(open_gl_mock,glIsFramebuffer(gt(0u))).RETURN(true);',
+                        'ALLOW_CALL(open_gl_mock,glIsProgram(0u)).RETURN(false);',
+                        'ALLOW_CALL(open_gl_mock,glIsProgram(gt(0u))).RETURN(true);',
+                        'ALLOW_CALL(open_gl_mock,glIsVertexArray(0u)).RETURN(false);',
+                        'ALLOW_CALL(open_gl_mock,glIsVertexArray(gt(0u))).RETURN(true);',
+                        'ALLOW_CALL(open_gl_mock,glLinkProgram(gt(0u)));']
+
+gl_types = ['GLbitfield', 'GLboolean', 'GLbyte', 'GLchar',
+            'GLcharARB', 'GLclampd', 'GLclampf', 'GLclampx', 'GLDEBUGPROC',
+            'GLDEBUGPROCAMD', 'GLDEBUGPROCARB', 'GLdouble',
+            'GLeglClientBufferEXT', 'GLenum', 'GLfixed', 'GLfloat', 'GLhalf',
+            'GLhandleARB', 'GLint', 'GLint64', 'GLint64EXT', 'GLintptr',
+            'GLintptrARB', 'GLLOGPROCREGAL', 'GLshort', 'GLsizei', 'GLsizeiptr',
+            'GLsizeiptrARB', 'GLsync', 'GLubyte', 'GLuint', 'GLuint64',
+            'GLuint64EXT', 'GLushort', 'GLvdpauSurfaceNV',
+            'GLvoid','cl_context','cl_event','void']
 
 
 functions = []