Working demo. Much work still required.