Added a new timer class to record timing for different operations to gauge performance under changing scenarios.
Refining how some methods work/fixing some issues.