still works with closure compiler