Change architecture to be modular and use configurable backends
Add defaults to config