more abstraction for javascript yay