In the context of DOORS, a medium-scale distributed system, running on tens of “normal PCs and/or embedded devices, we propose a solution for the problem of efficient allocation of execution and storage resources. We distinguish between the node-level problem of scheduling the execution of object methods and the system-level problem of optimally placing objects on nodes such that locality is maximised: inter-communicating objects are kept as close to each other as possible and the most “active” objects are hosted on nodes with the highest processing capacity and/or the highest amount of memory available. DOORS aims for architectural simplicity and achieves this by providing more control to the solution implementer, such that the behaviour of the object balancer can be tailored to the specifics of the problem addressed by the implementation. The proposed design for the balancer provides a simple relocation service, and a set of perpetually updated set of metrics, such that the solution implementer may define, “plug in” and enforce a balancing policy out of an unlimited number of alternatives.