updated with major changes