Refarctoring and some additions