constructor patterns