cleaned code. seperated implementation from interface