Split off a backend interface for extensibility. Moved save function into register, where it belongs. Implmented a gob backend