some additions to allow more dynamic additions/deletions