Короче, написал все функции. В принципе они очень похожи за исключением небольшой проверки. Все работает, проверял, дебажил и т.д. Но валику нравится только одна функция, хотя на ее основе делал все остальные.