Structuring Applications with Components