-# Proposed changes
+## Proposed changes
The architecture of the initial implementation needs to be re-factored to with give better Model, View, Controller separation, allowing for:
- more ways of interacting with the server than the ID Selector App and Web Provisioning;
- different storage strategies;
- ease of maintenance.
-
-## Overview
+### Overview
This diagram shows the proposed new architecture.
![image](https://gitorious.org/petefoth-public-docs/petefoth-public-docs/blobs/raw/master/Moonshot/Proposed%20New%20Architecture.jpg)
All of the components will be implemented in Vala. The shared libraries will be built with the -H option to enable access from C code, and introspection generated to allow use from other languages..
-## _identity-server_ detail
+### _identity-server_ detail
Implemented as a shared library in Vala.
Uses GTK widgets for simple input from User.
-## _moonshout-ui_ detail
+### _moonshout-ui_ detail
This is now just an App for managing Identities. It's *only* function is to allows a User to manage Identities and Services.
Implemented in Vala using GTK widgets.
-## _identity-provisioning_ detail
+### _identity-provisioning_ detail
The *_identity-provisioning-file-handler_* component replaces the moonshot-webp component. It provides the same InstallIdentityCard() functionality as the moonshot-webp component in the initial implementation, as well as new functions to uninstall and revoke identities. It has no UI - any interaction with the User is done when the file is processed by the *_identity-server_*
The *_identity-provisioning-cli-handler_* component is not part of the current iteration. In a future iterations it is intended to provide via the command line the same functionality as *_identity-provisioning-file-handler_* provides via files.
-## Use Case Implementation
+### Use Case Implementation
The re-factored software is designed to implement the following use cases that were part of the first iteration: