Let's simplify this logic a little bit by extracting so methods