update tests
add profiling
use special data structures for points instead of dicts