Still very much unfinished, but works halfway.