James C - minor
James C - type declarations for everything
James C - Types now cannot be null
James C - Objects are not null either
James C - refactoring