Core API objects, should not instantiate one another