should be abstract