I will try to separate some parts.