copied all code