now with named parts, but still experimenting
fuck yea, working atom method
cleaned up version