added square self