Working, code refactored and commented. Show on Monday