from scratch version