Changes thanks to @Ocramius