Re-written some parts