Need to clean it up before actually suggesting others use it. But, it works with surprising few bugs during dev.