added more variant algorithms