New API using Composite pattern