restructure for performance