big refactor based on prezto