rewrite from scratch as classes
delete not supported yet