Improvements :) See diff