Engine uses unique_ptr to wrap Systems