Separating system’s concerns from programmer’s concerns Language constructs for programming distributed systems Transparency to various system dependent.