tons of implementations and a chat