many changes
many changes. about to refactor