Implemented. Could and should be optimized.