MVP for mobile completed, lots of refactoring for robustness