creating new system for meshes, each mesh struct has functions and all data is held privately, this makes it more secure and less prone to errores (null pointers, uninitialized variables...)
added new error struct for thowing / catching errors