Added a working implementation with parts