First working version, still super rough.