separated controller out to module