Protected builder constructor