inital method that should be faster (once polished)