Split code up into more modules and add users request