reached two real tough problem
trying an idea of reusing knots
imcomplete idea: differ shape from component