Agents may sub-contract some of their tasks to other agent(s) even when they don’t share a common goal. An agent tries to contract some of its tasks that it can’t perform by itself, or when the task may be performed more efficiently or better by other agents. A "selfish" agent may convince another "selfish" agent to help it with its task, even if the agents are not assumed to be benevolent, by promises of rewards. We propose techniques that provide efficient ways to reach subcontracting in varied situations: the agents have full information about the environment and each other vs. subcontracting when the agents don’t know the exact state of the world. We consider situations of repeated encounters, cases of asymmetric information, situations where the agents lack information about each other, and cases where an agent subcontracts a task to a group of agents. We also consider situations where there is a competition either among contracted agents or contracting agents. In all situations we would like the contracted agent to carry out the task efficiently without the need of close supervision by the contracting agent. The contracts that are reached are simple, Pareto-optimal and stable.