Попахивает костылём, конечно. Особенно в конце, где if.