improve: фабрика ошибок