James C - split procedure
James C - spilt out compilation to its own file
James C - refactored statement