Extract HTTP into its own module