Working version with no part struct