Feature/using abstract