JamesChen26 templated
cut off complete