added sine generator