add size option, fix bugs