modified constructors to be more lisp-like and implemented IsAtom