more algorithms implemented