+ improve size and speed