Removed interface, made abtract methods insetad in abstract class