Return any error from ListenAndServe

ListenAndServe blocks so long as the server is running.
Rework the core