working but not all
finished