major changes to functionality