diff --git a/project2/eval.scm b/project2/eval.scm
index ca4dfa3..fb12902 100644
--- a/project2/eval.scm
+++ b/project2/eval.scm
@@ -109,15 +109,7 @@
         (else (error "Unknown expression type -- EVAL" exp))))
 
 (define (m-apply procedure arguments)
-  (cond ((primitive-procedure? procedure)
-         (apply-primitive-procedure procedure arguments))
-        ((compound-procedure? procedure)
-         (eval-sequence
-          (procedure-body procedure)
-          (extend-environment (procedure-parameters procedure)
-                              arguments
-                              (procedure-environment procedure))))
-        (else (error "Unknown procedure type -- APPLY" procedure))))
+  (apply-procedure procedure argument))
 
 (define (list-of-values exps env)
   (cond ((no-operands? exps) '())
@@ -192,13 +184,12 @@
 
 ; double bubbles
 (define (make-procedure parameters body env)
-  (list 'procedure parameters body env))
-(define (compound-procedure? proc)
-  (tagged-list? proc 'procedure))
-(define (procedure-parameters proc) (second proc))
-(define (procedure-body proc) (third proc))
-(define (procedure-environment proc) (fourth proc))
-
+  (lambda arguments
+    (eval-sequence body
+                   (extend-environment
+                    parameters
+                    arguments
+                    env))))
 
 ; bindings
 (define (make-binding var val)
@@ -268,9 +259,7 @@
 
 ; primitives procedures - hooks to underlying Scheme procs
 (define (make-primitive-procedure implementation)
-  (list 'primitive implementation))
-(define (primitive-procedure? proc) (tagged-list? proc 'primitive))
-(define (primitive-implementation proc) (cadr proc))
+  implementation)
 (define (primitive-procedures)
   (list (list 'car car)
         (list 'cdr cdr)
@@ -293,8 +282,8 @@
 (define (primitive-procedure-objects)
   (map make-primitive-procedure (map cadr (primitive-procedures))))
 
-(define (apply-primitive-procedure proc args)
-  (apply (primitive-implementation proc) args))
+(define (apply-procedure proc args)
+  (apply proc args))
 
 ; used to initialize the environment
 (define (setup-environment)
