avoid manual instantiating