<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,2 +1,3 @@
 doc
-pkg
\ No newline at end of file
+pkg
+test/reports</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -8,15 +8,8 @@ module Watirloo
 
   VERSION = '0.0.2' # Jan2009
   
-  # Generic Semantic Test Object
-  module TestObject
-    attr_accessor :id, :desc
-  
-  end
-
   # browser. we return IE or Firefox. Safari? Other Browser?
   class BrowserHerd 
-    include TestObject
     
     @@target = :ie #default target
 
@@ -48,10 +41,17 @@ module Watirloo
   # Pages make Watir fun
   class Page
     
-    include TestObject
-    attr_accessor :b
-    attr_reader :faces
+    attr_accessor :browser
+    attr_reader :interfaces
 
+    class &lt;&lt; self 
+      def interfaces
+        @interfaces ||= {}
+      end
+      def set(facename, definition)
+        self.interfaces[facename] = definition
+      end
+    end
     # by convention the Page just attaches to the first available browser.
     # the smart thing to do is to manage browsers existence on the desktop separately
     # and supply Page class with the instance of browser you want for your tests.
@@ -63,8 +63,7 @@ module Watirloo
     # part of this page initialization is to provide a convenience while developing tests where
     # we may have only one browser open and that's the one browser were we want to talk to.
     def initialize(browser = Watirloo::BrowserHerd.browser , &amp;blk)
-      @b = browser
-      @faces = {}
+      @browser = browser
       instance_eval(&amp;blk) if block_given? # allows the shortcut to do some work at page creation
     end
   
@@ -72,38 +71,46 @@ module Watirloo
     # data map is a hash, key represents the page object,
     # value represents its value to be set, either text, array or boolean
     def spray(dataMap)
-      dataMap.each_pair do |face_symbol, value|
-        get_face(face_symbol).set value #make every element in the dom respond to set to set its value
+      dataMap.each_pair do |label, value|
+        #depends on every element in the dom to respond 
+        #to set method in order to set value
+        interface(label).set value 
       end
     end
+    
+    # set values on the page given the interface keys
+    alias set spray 
   
-    # return Watir object given by its semantic face symbol name
-    def get_face(face_symbol)
-      if self.respond_to? face_symbol # if there is a defined wrapper method for page element provided
+    # return Watir object given by its semantic interface symbol name
+    def interface(face_symbol)
+      #if there is a defined wrapper method for page element provided
+      if self.respond_to? face_symbol 
         return self.send(face_symbol) 
-      elsif @faces.member?(face_symbol) # pull element from @faces and send to browser
-        method, *args = @faces[face_symbol] # return definition for face consumable by browser
-        return @b.send(method, *args)
+      # or pull element from @interfaces and send to browser
+      elsif @interfaces.member?(face_symbol) 
+        method, *args = @interfaces[face_symbol]
+        # return definition for face consumable by browser
+        return @browser.send(method, *args)
       else
-        #??? I ran out of ideas
-        raise ::Watir::Exception::WatirException, 'I ran out of ideas in Watirloo'
+        raise ::Watir::Exception::WatirException, &quot;Interface not defined for this page: #{face_symbol}&quot;
       end
     end
-    alias face get_face
   
     # add face definition to page
-    def add_face(definitions)
+    def add_interface(face_and_value)
       if definitions.kind_of?(Hash)
-        @faces.update definitions  
+        @interfaces.update face_and_value
+      else
+        raise ::Watir::Exception::WatirException, &quot;Interface requires key as label and value as browser definition&quot;
       end
     end
   
-    # Delegate execution to browser if no method or face defined on page class
+    # 
     def method_missing method, *args
-      if @b.respond_to? method
-        @b.send method, *args
-      elsif  @faces.member?(method.to_sym)
-        get_face(method.to_sym)
+      if @browser.respond_to? method
+        @browser.send method, *args
+      elsif  @interfaces.member?(method.to_sym)
+        get_interface(method.to_sym)
       else
         raise ::Watir::Exception::WatirException, 'I ran out of ideas in Watirloo'
       end</diff>
      <filename>lib/watirloo.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,8 @@
 require File.dirname(__FILE__) + '/test_helper'
 
+class Person &lt; Watirloo::Page
+  interface :bla, [:text_field, 'name', 'last_nm']
+end
 # def wrappers with suggested semantic names for elements
 class Person &lt; Watirloo::Page
   </diff>
      <filename>test/person_def_wrappers_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>0bf15b8398b6cf7ad308cc1398e8c7026ce821b7</id>
    </parent>
  </parents>
  <author>
    <name>marekj</name>
    <email>marekj.com@gmail.com</email>
  </author>
  <url>http://github.com/marekj/watirloo/commit/b917473e4bc41bc923d2c7cdf23a0d681ad40f23</url>
  <id>b917473e4bc41bc923d2c7cdf23a0d681ad40f23</id>
  <committed-date>2009-01-19T13:55:04-08:00</committed-date>
  <authored-date>2009-01-19T13:55:04-08:00</authored-date>
  <message>get rid of TestObject. it was Yagni. explose interfaces in class</message>
  <tree>80271648ec6d2d2817ac5921551af438d0617bfe</tree>
  <committer>
    <name>marekj</name>
    <email>marekj.com@gmail.com</email>
  </committer>
</commit>
