done point 1
up to point 4