you can use a factory for this