class abstractisation