using listen and serve instead of just serve