create prototype
refactor