handle different curve types