Implement self-programming agent