Moved sources to an external file so it can be maintained easier