work in progress almost recursive create