Umbrella issue for refactoring. * which can then be used to integrate in editor * separate logic for demo UI from core logic * separate parser from state logic where possible