Yes, it's quite doable. What you have described, I am already doing.
I have a top-level object, called RTDE, which represents the platform.
I declared a file, Login.scala, in which I put all the logic for authentication. There is an object, Login, with a method, "sequence".
Inside of the RTDE object, I make reference to it, so that RTDE.Login = the Login object.
Net result, my scenario can simply say:
exec( RTDE.Login.sequence )
I took it further. We have more than a dozen services, each with multiple methods. I create one .scala file per service. There is an object defined that represents the service, and a sub-object/property for each method.
Those, in turn, are built by using a generic "service builder" object, which in turn is built on a generic RESTful service object. The RTDE specific RESTful code knows to add the authentication headers. This part was a pain to get right, because the inheritance structure was complicated.
But the end result is, I can write scenarios that look like this:
exec( RTDE.Login.sequence )
.exec( RTDE.ServiceName.method )
Sometimes, my methods take parameters, other times, they just leverage conventional session variables.
If you look through my posts in the forum, you can see where I talked about it, and in some cases shared some of the code. If you get stuck, let me know, I'll send you a code sample.