algorithms for self-improvement