implmented a base perceptron abstract class again