Updated to have private methods