diff --git a/collaboration/GSoC-2011-Eranda/twitapp/.classpath b/collaboration/GSoC-2011-Eranda/twitapp/.classpath
new file mode 100644
index 0000000000..07ca123c63
--- /dev/null
+++ b/collaboration/GSoC-2011-Eranda/twitapp/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/collaboration/GSoC-2011-Eranda/twitapp/.project b/collaboration/GSoC-2011-Eranda/twitapp/.project
new file mode 100644
index 0000000000..e93020151b
--- /dev/null
+++ b/collaboration/GSoC-2011-Eranda/twitapp/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>twitapp</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/collaboration/GSoC-2011-Eranda/twitapp/.settings/org.eclipse.jdt.core.prefs b/collaboration/GSoC-2011-Eranda/twitapp/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..1095552bb6
--- /dev/null
+++ b/collaboration/GSoC-2011-Eranda/twitapp/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Fri May 13 10:53:56 IST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/AppManager.java b/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/AppManager.java
new file mode 100644
index 0000000000..0ce20feeba
--- /dev/null
+++ b/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/AppManager.java
@@ -0,0 +1,39 @@
+package main.java.twitapp.services;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+public class AppManager {
+	
+	private User user;
+	private UserBase userBase;
+	
+	public AppManager(String userId){
+		userBase = UserBase.getInstance();
+		user = userBase.get(userId);
+	}
+	
+	public void twit(String twit){
+		user.setTwit(new Twit(twit));
+	}
+	
+	public void follow(String followId){
+		user.setFollower(userBase.get(followId));
+	}
+	
+	public Iterator<User> getFollowers(){
+		ArrayList<User> users = user.getFollowers();
+		return users.iterator();
+	}
+	
+	public Iterator<Twit> getTwits(){
+		ArrayList<Twit> twits = user.getTwits();
+		return twits.iterator();
+	}
+	
+	public Iterator<Twit> getFollowerTwits(String followeId){
+		ArrayList<Twit> followerTwits= userBase.get(followeId).getTwits();
+		return followerTwits.iterator();
+	}
+	
+}
diff --git a/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/Twit.java b/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/Twit.java
new file mode 100644
index 0000000000..ec842d65e5
--- /dev/null
+++ b/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/Twit.java
@@ -0,0 +1,23 @@
+package main.java.twitapp.services;
+
+import java.util.Date;
+
+public class Twit {
+	
+	private String twit;
+	private final Date timestamp;
+	
+	public Twit(String twit){
+		this.twit = twit;
+		timestamp = new Date();
+	}
+	
+	public String toString(){
+		return  twit;
+	}
+	
+	public Date getTimestamp(){
+		return timestamp;
+	}
+
+}
diff --git a/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/User.java b/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/User.java
new file mode 100644
index 0000000000..cd113db443
--- /dev/null
+++ b/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/User.java
@@ -0,0 +1,49 @@
+package main.java.twitapp.services;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+
+public class User {
+	
+	private String name;
+	private ArrayList<User> followers = new ArrayList<User>();
+	private ArrayList<Twit> twits = new ArrayList<Twit>();
+	
+	public User(String name){
+		this.name = name;
+	}
+	
+	public String getName() {
+		return name;
+	}
+
+	public void setFollower(User follower){
+		followers.add(follower);
+	}
+	
+	public ArrayList<User> getFollowers(){
+		return followers;
+	}
+	
+	public void setTwit(Twit twit){
+		twits.add(twit);
+	}
+	
+	public ArrayList<Twit> getTwits(){
+		return twits;
+	}
+	
+	public ArrayList<Twit> getTwits(Date date){
+		Iterator<Twit> t = twits.iterator();
+		ArrayList<Twit> newer = new ArrayList<Twit>(); 
+		Twit tt;
+		while((tt = t.next())!=null){
+			if(tt.getTimestamp().after(date)){
+				newer.add(tt);
+			}
+		}
+		return newer;
+	}		
+	
+}
diff --git a/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/UserBase.java b/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/UserBase.java
new file mode 100644
index 0000000000..046f0701f8
--- /dev/null
+++ b/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/UserBase.java
@@ -0,0 +1,21 @@
+package main.java.twitapp.services;
+
+import java.util.HashMap;
+
+public class UserBase extends HashMap<String, User> {
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	private static UserBase userBase = new UserBase();
+	
+	private UserBase(){
+	}
+	
+	public static UserBase getInstance(){
+		return userBase;
+	}
+	
+	
+}
diff --git a/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/UserManager.java b/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/UserManager.java
new file mode 100644
index 0000000000..cfae0353bd
--- /dev/null
+++ b/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/services/UserManager.java
@@ -0,0 +1,18 @@
+package main.java.twitapp.services;
+
+public class UserManager {
+	
+	UserBase userBase;
+	
+	public UserManager(){
+		userBase = UserBase.getInstance();
+	}
+	
+	public void addUser(String userId,String name){
+		userBase.put(userId, new User(name));
+	}
+	
+	public void removeUser(String userId){
+		userBase.remove(userId);
+	}
+}
diff --git a/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/test/TwitAppTest.java b/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/test/TwitAppTest.java
new file mode 100644
index 0000000000..f9d6baec8b
--- /dev/null
+++ b/collaboration/GSoC-2011-Eranda/twitapp/src/main/java/twitapp/test/TwitAppTest.java
@@ -0,0 +1,32 @@
+package main.java.twitapp.test;
+
+import java.util.Iterator;
+
+import main.java.twitapp.services.AppManager;
+import main.java.twitapp.services.Twit;
+import main.java.twitapp.services.UserManager;
+
+public class TwitAppTest {
+
+	/**
+	 * @param args
+	 */
+	public static void main(String[] args) {
+		UserManager userManager = new UserManager();	
+		userManager.addUser("eranda", "Eranda Sooriyabandara");
+		userManager.addUser("ishara", "Ishara Karunarathne");
+		
+		AppManager manager1 = new AppManager("eranda");
+		manager1.twit("Won the world cup 2011");
+		
+		AppManager manager2 = new AppManager("ishara");
+		manager2.follow("eranda");
+		
+		Iterator<Twit> twits = manager2.getFollowerTwits("eranda");
+		while(twits.hasNext()){
+			System.out.println(twits.next().toString());
+		}
+
+	}
+
+}