added normalization, but not tested