diff --git a/48-RuleOfFive.cpp b/48-RuleOfFive.cpp
index ee0a444..35e84d4 100644
--- a/48-RuleOfFive.cpp
+++ b/48-RuleOfFive.cpp
@@ -5,6 +5,8 @@
 class A{
 public:
 	A(); //default constructor.
+	//A() = default; //use compiler generated constructor.
+	//A() = delete; //no default constructor.
 	A(int); //user-defined constructor.
 	~A(); //destructor.
 	A(const A&); //copy constructor.
@@ -12,19 +14,20 @@ class A{
 	A& operator=(const A&); //copy assignment.
 	A& operator=(A&&); //move assignment.
 	
-	int a;
+	int *a;
 };
 
-A::A(): a{0}{
+A::A(): A{0}{
 	std::cout << "default constructor." << std::endl;
 }
 
-A::A(int x): a{x}{
+A::A(int x): a{new int{x}}{
 	std::cout << "user defined constructor." << std::endl;
 }
 
-A::~A(){
+A::~A(){	
 	std::cout << "destructor." << std::endl;
+	delete a;
 }
 
 A::A(const A& x): a{x.a}{
@@ -33,26 +36,41 @@ A::A(const A& x): a{x.a}{
 
 A::A(A&& x): a{x.a}{
 	std::cout << "move constructor." << std::endl;
+	delete x.a;
 }
 
 A& A::operator=(const A& x){
-	A t{x.a};
+	A t{*x.a};
 	std::cout << "copy assignment." << std::endl;
 	return t;
 }
 
 A& A::operator=(A&& x){
-	A t{x.a};
+	A t{*x.a};
 	std::cout << "move assignment." << std::endl;
 	return t;
 }
 
 int main(){
-	A a;
-	A b{1};	
-	A c{a};	
+	A a;	
+	std::cout << std::endl;
+	
+	A b{1};
+	std::cout << std::endl;
+	
+	A c{a};
+	std::cout << std::endl;
+	
 	A d{};
+	std::cout << std::endl;
 	
 	a = b;
-	d = std::move(a);
+	std::cout << std::endl;
+	
+	d = std::move(a); //stl function that returns rvalue reference for given argument.
+	std::cout << std::endl;
+	
+	A e{std::move(a)};
+	std::cout << std::endl;
+	
 }
\ No newline at end of file