added sine-based stepping