made abstract class abstract :D