first pass at transformation