william porter