Lots of changes. Requests added. (Semi)