Introduced typedef's to make the code more readble and maintanable