fields that do not change should be final