Added abstract class implements interface and some more changes.