cleaner logic & less lines