Added interface and a8stract class