Encapsulate user requests into own struct and fix some bugs