Abstract as much logic as is reasonable