updated ds to pure OOP