added logic & data, missing the last part