fixed to not use primitives.