big refactor
auth