finish the unimplemented parts