Add a system class to bind together all the parts, and manage matrix generation