! add empty check to save some cycles
! add comment