use vectors to make epsilon much faster.
explain what's going on in comments