why making it abstract ? The implementation is complete