JS abstraction