add caching?
remove comments