now works with dart2js