works fine, try to find mistakes