change the interfaces for PerceptronBase