Clean Agent Systems Design