Added interface and some changes