Adding selection support

The multiple commits are caused by me uploading code via Github. I will rebase it all before I merge. 
No problem about the structure. It's just how I learnt it. Will make it fit and add the strings.