SOEN 343 Refactoring project