- use factories and initializers