made methods in atom virtual for better speed