need to make classes non-copyable