Changes as per fosdev's comments, except for larger spec refactoring