#19 improve performance