An idea I have. Still a large WIP