add needed parts, but seems to have infinity recursive loop