v2. Partially tested