re-structure and add test