Factor out protocols & syntax in to namespaces
WIP