first refactor round
version 2 beta 1