based on greenlets and the most evil intentions