diff --git a/prototype.cabal b/prototype.cabal
--- a/prototype.cabal
+++ b/prototype.cabal
@@ -2,7 +2,7 @@
 cabal-version:	>= 1.2
 
 name:		prototype
-version:	0.2
+version:	0.3
 stability:	experimental
 author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp>
 maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>
@@ -27,13 +27,16 @@
 		> main :: IO ()
 		> main = fmap fst $ flip runPT initPTEnv $ do
 		>	dog <- clone object
-		>	name <- makeMember "name"
-		>	setName <- setMethod dog "setName" $ \this [ n ] -> do
+		>	name	<- makeMember "name"
+		>	setName	<- makeMember "setName"
+		>	sit	<- makeMember "sit"
+		>	setMethod dog setName $ \this [ n ] -> do
 		>		setMember this name n
 		>		return [ ]
-		>	sit <- setMethod dog "sit" $ \this _ -> do
+		>	setMethod dog sit $ \this _ -> do
 		>		n <- member this name
 		>		liftPT $ putStrLn $ fromPrimStr n ++ " sitting."
+		>		return [ ]
 		>	myDog <- clone dog
 		>	method myDog setName [ primStr "John" ]
 		>	method myDog sit [ ]
diff --git a/src/Control/Prototype.hs b/src/Control/Prototype.hs
--- a/src/Control/Prototype.hs
+++ b/src/Control/Prototype.hs
@@ -123,13 +123,11 @@
 	objBody@ObjectBody { objectMembers = mems } <- getObject obj
 	putObject objBody { objectMembers = ( mn, val ) : mems }
 
-setMethod :: Monad m => Object -> String -> Method m -> PTMonad m Member
-setMethod obj name met = do
+setMethod :: Monad m => Object -> Member -> Method m -> PTMonad m ()
+setMethod obj mem met = do
 	newId <- getNewId
 	putObject $ Method newId met
-	mem <- makeMember name
 	setMember obj mem newId
-	return mem
 
 printMemberName :: MonadIO m => Member -> m ()
 printMemberName ( Member name ) = liftIO $ putStrLn name
