intermediate steps; do not use yet