pretty big refactor
renaming caps
v