Re-written some parts (3)