p did not need to break into abstraction