some rubbish deleted