commenting and adding some extra useful constructors