refactored, made the bot a component