implemented variable speed