working more on abstract with ref and/or var