some movement of lines / using `throw` for exception