дофигища исключений и несколько правил вот и всё