fix subtile bug: jei.previous should not return self as previous
reduce memory usage