I think 86-113 should be refactored