added use strict and self=this