change init to construct