everything except fill implemented