Separated JS concerns