nice, what references did you use for your implementations?