Refactor namespaces and folders to make a clearer distinction of protocol layers; make it easier to choose a functionality subset