switched to Marshal::(load/dump) for performance reasons