requires curl