setting up the module interfaces and breaking things out a little bit