Added interface and some classes